Skip to content

Point-in-time review data: recovered work and capability boundary

Owner update, 3 October (EX2): historical downloads include available recoverable database history, including pre-migration data. No arbitrary date/retention-length cutoff; no fabricated legacy snapshots/versions. As-of instant representation and reconstruction/manifests remain engineering details, not unresolved historical availability. This does not alter the inspected implementation findings below or claim historical modes are shipped.

Confirmed direction (EX1)

Chris, 2 October 2026: downloads default to current answers, including accepted/gold and candidate answers as applicable. Previous versions must also be downloadable for reproducibility, including requesting review-data state as of a particular date. This replaces the earlier “historical gold export undecided” note. It is a confirmed requirement, not a claim of shipping.

Reuse prior point-in-time/revision work before designing an export extension. Preserve immutable annotation/session/question/settings references and accepted snapshots. Do not treat historical completed session versions as current after an incomplete Save, or treat autosaved edits as an explicit confirmed session version. Existing export grants, current resource authority, visibility and blinding remain required; a historical request does not grant historical permissions. Exact cutoff/timezone, eligible dataset scope and cross-record consistency semantics need comparison with existing contracts, rather than inventing a second version-history engine here.

Strongest host-independent match

PR #2461 — feat(qm): Question Management v2 — R1 domain + API + web scaffolds (WIP) is OPEN, not merged. Its current inspected head is 1ca9f5defa3fbd114d9ea8c27d850a268a523740. It contains the earlier commit 3bb2dbbe7df1b9eed88fb20be1033721c2934291, “add versioned export schema sidecars”. GitHub's commit-to-PR association links that commit to #2461; local branch ancestry agrees.

Its ExportSpec.cs reserves CurrentState, AsOfDate, AsOfQuestionSetVersion, CompareVersions and SessionAuditTrail, with date/version selectors. However, IsR1Supported() accepts only CurrentState. The controller rejects other modes with “Only current-state exports are supported in R1.” Reserved request fields are not working historical queries. Schema sidecars describe exported definitions and observed version usage; they do not prove review-state reconstruction at an arbitrary date.

PR #2574 — feat(qm): Migration, ADR-009 cutover, and API (PR-C of 5) is also OPEN, head 1b93cbbc42a764da27a03870b6024e57f5a23dd4. Direct GitHub inspection of its ExportSpec.cs confirms the same CurrentState-only support gate. This is the split implementation work to compare/reuse, not proof that historical downloads or full temporal queries shipped.

The #2461 release strategy records migrated schema sidecars and current-state export transition guards, with production verification still pending in that historical checklist. Its older autosave/version-transition semantics must be reconciled with the latest owner overlay, not copied as current decisions.

Plans, merged adjacent work and exclusions

Work Status checked 2 October 2026 Relevance and limit
#2398 — docs: product roadmap, feature specs, and planning documentation MERGED, 4 May 2026 Documentation foundation for immutable versions, complete session snapshots and time-travel queries. A merged plan is not a shipped temporal API.
#2497 — QM · Rollout: Production migration + flag cutover + export v2 OPEN issue Export scope explicitly adds optional QuestionVersionId columns and compatibility tests; does not claim arbitrary-date historical retrieval.
#3241 — test(stats): prove source-row export compatibility MERGED, 5 September 2026 Current source-study CSV fixtures/progress; PR states no production export code changes. Not historical snapshots.
#3243 — fix(api): enforce project export authorization MERGED, 5 September 2026 Reuse existing export authorization. Does not supply an as-of selector or revision reconstruction.
#3932 — feat(notifications): saved inbox for completed exports OPEN Saved completion notification; export files remain browser-streamed. Not stored reproducible result files or historical review data.
#3578 — feat: show observed reviewer annotation history MERGED, 25 September 2026 Related observed-statistics history; not proof of reconstructing every annotation/gold snapshot as of a date.
#3148 — feat(stats): history reads, evidence, mode-epoch stage two, flag adapter and DI wiring (Phase 1 wave 1D part 2) MERGED, 2 September 2026 Statistics history/evidence infrastructure, distinct from temporal review-answer retrieval.

Question-definition export/import (#2557), identity/Auth0 export, storage backups and a MongoDB transaction's consistent current snapshot are different capabilities. Do not count them as arbitrary-date review-data retrieval. No deployment/production feature flags were checked.

Source paths to reuse

  • Annotation Versioning README: complete ASV AnnotationAVMap, historical session versions and explicit time-travel intent (§ASV, D1).
  • Annotation Versioning design session: annotation/session version identity and admin-controlled transitions.
  • Reconciliation design decisions: immutable accepted snapshot/current version and provenance; D1 explicitly enables time-travel queries.
  • Main src/libs/project-management/SyRF.ProjectManagement.Core/Model/DataExportJobAggregate/DataExportJob.cs: inspected request has current export filters, no as-of date or version selector.
  • Main src/services/api/SyRF.API.Endpoint/Controllers/DataExportController.cs: inspected CSV path retrieves project Studies; no arbitrary-date revision reconstruction found.
  • Statistics export compatibility: current source exports and operational progress are distinct from statistics history/snapshot guarantees.

Main-source findings were inspected at 50f115ddd7a4c3cf7ae0b60b15c0800872930049; the inspected export request/controller files are unchanged at fetched 5861b5844b5b2f3e29ef378b815c4ca0574905c3. This is a code boundary, not a statement about every deployment or inaccessible Windows session.

Search coverage and remaining uncertainty

Read-only GitHub lookup included all PR states (open, closed and merged), export/versioned sidecar terms, temporal/point-in-time/time-travel/reproducibility terms, issues, actual PR heads and commit association. Local repository searches covered plans, source, branch history and relevant handovers. No standalone implemented full as-of review-answer query was verified. The strongest recovered code match is #2461/#2574; the immutable-version plan is #2398.

Juniper Claude Code history was inspected read-only under /home/chris/.claude/projects/ and /home/chris/.claude/history.jsonl, including SyRF root/main/handover sessions. Relevant matches were reduced to metadata/document references; unrelated private content was not included in this report or the portable package. The narrowed scan produced 42 candidate transcript files and 9 metadata/document-reference records, mainly statistics consumer/rebuild/observed-history/point-fold references; these were not evidence of a full historical review-answer query. No direct matching standalone user task was identified in the available history index or textual session search. Windows-only transcripts not present on Juniper were not inspected. This bounded no-match does not prove such a task never existed elsewhere. The package contains only a sanitized evidence summary, not transcripts.

Next compare the recovered contracts against EX1, latest explicit Save/Complete state, shared forms, accepted snapshots and current permissions. Establish actual cutoff/reconstruction support before proposing implementation. No runtime redesign, migration or live pause is approved by this investigation.