Skip to content

✨ feat(sync): report queued transcript projection - #77

Merged
yeazelm merged 1 commit into
mainfrom
matt/pcc-1278-transcript-projection
Aug 25, 2026
Merged

✨ feat(sync): report queued transcript projection#77
yeazelm merged 1 commit into
mainfrom
matt/pcc-1278-transcript-projection

Conversation

@yeazelm

@yeazelm yeazelm commented Aug 25, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Distinguish newly accepted transcript versions from content already present on the server.
  • Report projection as queued asynchronously instead of implying that browsing state is already complete.
  • Preserve successful per-file acknowledgements during partial failures.
  • Add verbose per-file outcomes while retaining the existing public sync API shapes.

How it works

Successful ingest acknowledgements are decoded defensively: known record counts and deduplication status survive independently when an older or partially compatible server omits fields. The sync summary counts unique sessions queued for projection, while verbose output reports each file's session, path, record count, and acceptance outcome.

This requires the companion papercomputeco/tapes server-side projection PR for complete transcript browsing behavior, while remaining compatible with older acknowledgement payloads.

Behavior matrix

Server response CLI result
New transcript version Report one new version and queue its session
Content already present Report already present and requeue projection
Partial acknowledgement Preserve fields the server supplied
Successful response with unparseable body Treat upload as accepted without inventing counts
Mixed success and failure Report successful outcomes, then exit nonzero

Test plan

  • CI-equivalent formatting and Clippy preflight
  • 58 focused transcript client, sync, tailer, and anchor tests
  • Public API compatibility test
  • Ingest conformance coverage
  • git diff --check

Part of PCC-1278

Treat successful transcript acknowledgements as accepted immutable
versions and distinguish new, deduplicated, and unknown outcomes. Report
projection as asynchronously queued per session rather than completed,
and preserve successful acknowledgements when another upload fails.

Keep the public sync entry points compatible while making detailed
per-file outcomes available to verbose callers.
@linear-code

linear-code Bot commented Aug 25, 2026

Copy link
Copy Markdown

PCC-1278

@greptile-apps

greptile-apps Bot commented Aug 25, 2026

Copy link
Copy Markdown

Greptile Summary

This PR makes transcript acknowledgement fields independently optional and updates sync reporting to distinguish new content, existing content, failures, and unavailable outcomes.

  • Adds verbose per-file sync reports while preserving the public library API shapes.
  • Counts unique successfully accepted sessions whose asynchronous projection was queued.
  • Preserves successful file delivery state during partial tailer batches.
  • Updates user documentation to distinguish ingest acceptance from projection readiness.

Confidence Score: 5/5

The PR appears safe to merge with no concrete blocking or independently actionable non-blocking defects identified.

The acknowledgement parsing, partial-success accounting, verbosity dispatch, and asynchronous projection reporting remain internally consistent with the documented ingest and public API contracts.

Important Files Changed

Filename Overview
crates/tapesctl/src/transcript/client.rs Decodes acknowledgement fields independently while retaining the existing public defaults and successful-response behavior.
crates/tapesctl/src/transcript/sync.rs Adds detailed file reporting, unique queued-session accounting, and post-report partial-failure handling without changing the public sync entry points.
crates/tapesctl/src/transcript/tailer.rs Uses detailed acknowledgement values for diagnostics while preserving per-file delivery fingerprints and retry behavior.
crates/tapesctl/src/transcript/codex_anchors.rs Logs independently available acknowledgement fields without changing anchor delivery success semantics.
crates/tapesctl/src/lib.rs Passes the parsed global verbosity count into the sync CLI reporting path.
crates/tapesctl/tests/public_compatibility.rs Adds compile-time checks that transcript outcomes and sync retain their existing public shapes.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart LR
    A[Transcript files] --> B[tapesctl sync]
    B --> C[POST transcript]
    C -->|Successful response| D[Preserve optional ack fields]
    C -->|Failure| E[Record file failure]
    D --> F[Classify new, already present, or unavailable]
    D --> G[Count unique sessions queued]
    E --> H[Print reports, then exit nonzero]
    F --> I[Print aggregate and optional per-file output]
    G --> I
Loading

Reviews (1): Last reviewed commit: "✨ feat(sync): report queued transcript p..." | Re-trigger Greptile

@yeazelm
yeazelm merged commit 0923332 into main Aug 25, 2026
26 of 27 checks passed
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