Skip to content

docs: the owner drove three captures, and one of them falsified a field - #299

Merged
sanlee-ys merged 1 commit into
mainfrom
capture-ledger
Aug 18, 2026
Merged

docs: the owner drove three captures, and one of them falsified a field#299
sanlee-ys merged 1 commit into
mainfrom
capture-ledger

Conversation

@sanlee-ys

Copy link
Copy Markdown
Owner

The owner drove three captures on 2026-08-17. This writes all three into the
record. No fixture, renderer or relay gains a field — one of the three captures
falsified a vendor value, and the correct response to it was to keep the code
exactly as it is and upgrade a refusal from caution to measurement.

1. The cursor context_window capture is PAID (§7.16, §2.2)

§7.16's hand-back asked for a human at a real TTY. A live interactive session at
cursor-agent 2026.08.11-e8db854, in Windows Terminal from a PowerShell parent,
rendered Composer 2.5 Fast │ ctx 12.7% │ telltale after its first reply.

  • used_percentage populates on a real session — a live magnitude, not a null.
  • The precision is one decimal, which is what the synthesized fixture already
    assumed, so the fixture shape did not move.
  • It populates after the first reply, which answers step 3's alternative.

Stated rather than smoothed: that capture ran at a build one ahead of the
section's own pin (2026.08.04-aaa8809), so the populated shape is confirmed at
the newer build and the derived-field ruling stays measured at the older one.
The capture also cannot re-measure the two REFUSED derived fields, because §2.2
keeps them out of the structs and the line renders neither.

2. The agy statusline payload is RE-CAPTURED at 1.1.13 (§2.1, §3.8, stdin.go)

Fifteen live payloads from one interactive turn. The pin moves off 1.1.9 and the
six-payload record is superseded, not deleted.

  • The expect-four prediction is CONFIRMED, with ids. 3p-5h, 3p-weekly,
    gemini-5h, gemini-weekly. All four carry remaining_fraction, reset_time
    AND reset_in_seconds. The renderer needed no change, which is what the
    verbatim-id rule was built to buy, and the week fixture already held all four
    names.
  • agent_state observed live, and the documented vocabulary is incomplete: the
    turn reported authenticating, which is not on the list. Unknown states already
    draw verbatim in dim, so this costs nothing and is recorded as a measurement.
  • The payload grew into the §7.16b shape: the full context_window block plus
    conversation_id (equal to session_id on all fifteen fires),
    exceeds_200k_tokens, sandbox.enabled, terminal_width, model.effort.

transcript_path is FALSIFIED. The payload roots the path at
~\.gemini\antigravity\brain\<id>\… while the real transcript for that same
session exists only under ~\.gemini\antigravity-cli\brain\<id>\… — it drops the
-cli segment. Both roots exist at 1.1.13, and the advertised one is present and
EMPTY, so a reader that trusted the value would open nothing and could not tell a
missing file from a missing session. §2.1 declined this field because it was
unverified; it is now verified WRONG.

Every use of transcript_path / TranscriptPath in the repository was read. No
non-test code dereferences it
— it is parsed and held, never opened, stated or
rendered, and TestTranscriptPathIsHeldButNeverAPath already pins that. So
nothing is fixed because nothing is broken, and the field stays parsed-and-unused
on purpose: deleting it would delete the evidence.

The parser check was field by field: fourteen of sixteen top-level keys are
modelled, email is excluded deliberately and tested, and
exceeds_200k_tokens was the one field unmodelled by silence rather than by
decision — stdin.go now carries an agy-side reason instead of inheriting a
ruling made about Claude's payload. Nothing new is wired to a renderer or a
relay
; §7.16's display hold binds this seam.

3. The composer one-row sighting DOES NOT REPRODUCE (§9.38)

§9.38 named the decisive measurement. A three-line brief went into a live 5-of-5
room in Windows Terminal at a recorded 170 columns x 54 rows, and the composer
drew three rows — agreeing with #253's 588-geometry sweep. The render is now
verified by two instruments and the wire was never in doubt; against that stands
one unrepeated eyeball reading, recorded as a probable observation error via
the row-break ambiguity this section already documents.

The limit is named rather than rounded up: 170x54 is inside the swept band on
width and above it on height, which is the generous direction. It is nowhere
near the 60x10 floor, and at that geometry the pre-marker and marker code draw
identically — so the run closes the reported defect and is not evidence about
either code path near the floor.

Beyond the brief — two findings

A live cursor-agent CLI session draws no HUD row, and that is the DESIGN. The
operator observed this during capture 1. internal/adapter/cursor reads exactly
one store — the IDE's globalStorage/state.vscdb — and the CLI keeps its own,
which §7.16's excluded-fields block already records. A CLI session was never a row
this adapter could draw, so the observation confirms an existing claim rather than
opening a question. Recorded so it is not re-investigated in six months.

The ghostMode: true / privacyMode: 2 hypothesis therefore does not explain
that observation, and it is filed as an open measurement about a different and
live question: whether those settings suppress writes to the IDE store the adapter
does read. If they do, every Cursor row is conditional on an unmeasured privacy
setting — a zero-versus-absent failure one layer below the renderer. Untested, and
written as a hypothesis with its reason attached, not as a finding.

agy's serializer collapses zero and absent upstream of the gauge. Through
fourteen of fifteen fires the vendor sent used_percentage: 0 with the counters
at 0; every real number arrived at once on the final fire. On the first fire it
sent used_percentage: 0 beside context_window_size: 0 — a placeholder no
pointer type can separate from a measured zero, because the vendor writes a
literal 0 instead of omitting the key. The statusline honestly draws ctx 0%
for the length of a turn and then jumps. Recorded, deliberately not compensated
for: inferring "not yet known" from a zero the vendor stated is the invention
§4a.1 forbids.

STATE.md

The composer gap closes, beat 3's render caveat retires (wire and render both
verified), and the residues bullet drops the two capture debts paid here. #285's
outcome (capabilities parsed, gating nothing; subagentStatusLine refused,
FieldSubagents stays CapDerived) and #286's (the sink's reader as its own
foreground mode) are folded in. One further line was corrected: the arena bullet
still claimed a pasted multi-line draft had never been sent with enter, which
§9.38 recorded paid on 2026-08-15/16 — it is now flatly contradicted by the beat
above it, so it was fixed rather than left false.

No PR history was added to STATE.md — outcomes and open items only.

Verification

go vet ./... clean. go test green on internal/antigravity,
internal/statusline, all of internal/adapter/... (the canary doc guards that
substring-match design.md pins), internal/doctor, internal/cursorstatus,
internal/claude and internal/hud. internal/council was skipped per
CLAUDE.md's timeout note; nothing here touches it. ci.yml untouched.

The captures were read locally and nothing real entered this repository — no
session ids, no email, no plan tier, no real workspace paths. Every example is
synthesized to the observed shape.

🤖 Generated with Claude Code

The owner drove three captures on 2026-08-17. This records all three.

The cursor statusline capture is PAID. A live interactive session at
cursor-agent 2026.08.11-e8db854 rendered `ctx 12.7%` after its first reply.
So `used_percentage` populates, at one-decimal precision, and the
synthesized fixture's assumed shape was correct. That capture ran one build
ahead of the section's own pin, and the amendment states it.

The agy statusline payload is RE-CAPTURED at 1.1.13, and the pin moves off
1.1.9. Fifteen live payloads confirm FOUR quota buckets rather than two, and
the ids are observed rather than inferred from the slash command's human
labels. Each of the four carries remaining_fraction, reset_time and
reset_in_seconds. `agent_state` is observed live, and it reported one value
the documented vocabulary omits. The payload has grown to carry the same
context block Claude's payload carries.

The same capture FALSIFIED `transcript_path`. The payload drops the `-cli`
segment, so it names a directory that exists and is empty while the real
transcript sits elsewhere. The refusal to display that field is now a
measurement rather than caution. No code follows the path, which was
re-checked across the repository, so nothing is broken and nothing is fixed.
Nothing new is wired to a renderer or a relay.

The composer one-row sighting DOES NOT REPRODUCE. A three-line brief in a
live 5-of-5 room at a recorded 170x54 drew three rows, which agrees with the
588-geometry sweep. The sighting is recorded as a probable observation
error. The amendment names the limit: 170x54 is a generous geometry and says
nothing about the cells near the floor.

Two findings go beyond the three captures. A live cursor-agent CLI session
draws no HUD row BY DESIGN, because the adapter reads the IDE store and the
CLI keeps its own; the ghost-mode hypothesis is therefore recorded as an
open measurement about the IDE store instead of as the explanation. And agy
sends every context number on the last fire only, with a literal zero before
them, which is a zero-versus-absent collapse in the vendor's own serializer.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@sanlee-ys
sanlee-ys merged commit 877c9fe into main Aug 18, 2026
5 checks passed
@sanlee-ys
sanlee-ys deleted the capture-ledger branch August 18, 2026 12:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant