# Structure Cal roadmap

Updated 2026-10-04. The approved direction is an independent calendar service
that still works with Google. Every GFAVIP account has the same membership and
permission model, whether used by a person or a headless client.

## Delivered foundation and everyday collaboration

- Native calendars and selected full Google calendars, including non-booking events.
- GFAVIP browser/headless authentication, username/team grants and revocation.
- Read/create/move/delete API, idempotency, version checks and duplicate previews.
- JSON API errors, host timezone labels for bookings and compact daily agendas.
- Combined calendars, busy/free queries and guarded history/undo.
- Live undo previews, explicit RSVP applicability and agent-friendly pagination errors.
- Booking reads and reviewed rescheduling with owner-controlled delegation,
  explicit notification choices and separately delegated one-booking availability overrides
  with reasons, exact check previews, explicit conflict consent and attribution.
- Read-only booking diagnostics before delegation and Editors’ own booking audit history.
- Guarded operator reconciliation of local status after a verified Google cancellation.
- Public [setup guide](https://cal.structure.info/docs),
  [API reference](https://cal.structure.info/docs/api.md) and
  [skill](https://cal.structure.info/skill.md).

Bernie reported successful reads, busy checks, all-day creation and idempotency.
That feedback does not imply that every Google workflow or third-party client
has been tested.

## Current delivery: independent calendars and reliable notifications

| Area | Implemented behavior |
|---|---|
| Native recurrence | Daily/weekly/monthly/yearly rules, additional/excluded dates, moved/cancelled exceptions, occurrence/future/series edits, DST handling and version-guarded undo |
| Portability | ICS export and validated preview/apply import; stable UID identities, atomic retries and explicit conflicts instead of overwriting local edits |
| Google migration | Explicit selected-event/series copy into native calendars, source provenance and independent destination data; Google stays unchanged |
| Google recurrence | Recurring event creation, whole-series PATCH and previewed/recoverable future splits with explicit notification choices |
| Linked single events | Explicit group keys, reviewed membership, per-event ETags/results and recoverable bulk updates that preserve each event's date |
| Invitations | Explicit native invitation emails, delivery state/retries, revocation/resend and private RSVP links; recurring invitations apply to the whole series |
| Notifications | Opt-in member feeds and signed webhooks for changes, daily agendas and reminders; durable retries and access checks before delivery |
| Google observation | Incremental change sync, expiring watch renewal, invalid-token recovery and periodic polling when pushes are missed |
| Calendar interface | Week/month grids, search, recurrence editing, import review, subscriptions and invitation controls |
| Booking availability | Owner-selected additional Google calendars can block bookings, alongside primary Google and owned native events |
| Booking reschedules | Preview/hash/version/idempotency guards, same-event Google moves, recoverable local booking updates and owner-controlled Editor/Admin access |
| Planning | Same-calendar and cross-calendar conflicts, buffers and meeting suggestions within the requesting member's working hours |
| History operations | Owner-selected snapshot retention, admin history export and guarded reconciliation of uncertain Google undo outcomes |
| CalDAV | Native VEVENT discovery, bounded queries, conditional resource CRUD and expiring/revocable app passwords using existing calendar roles |

Notifications and invitations require explicit member setup or a send request.
Importing data, enabling a worker or deploying the app does not subscribe people,
send invitations or modify personal Google events. Copied attendees are informational
and imported alarms are disabled with visible warnings.

Release acceptance includes isolated automated tests, recurring/DST and permission
cases, invitation/webhook failure recovery, browser checks, real PostgreSQL staging
migrations and fixture flows, CI and production routing/documentation smoke checks.
Provider mocks do not establish delivery to a real recipient or compatibility with
every desktop/mobile calendar client.

## Travel and daily collaboration

- Delivered owner trip/rule dashboard and API, travel-zone working hours,
  online/in-person types, preferred/request-only hours, guest timezone hints,
  buffers, booking caps and no-meeting windows.
- Delivered pending guest reschedule requests with guarded delegated approval,
  private prep notes/links, ranked free-slot search and factual agenda briefings.
- Delivered explicit booking lifecycle feeds/webhooks with signatures, retry
  receipts and private delivery logs. No destinations are created automatically.
- Limits: caps count Structure Cal bookings; briefing gaps cover selected events;
  proposed times reserve nothing; delivery is at-least-once and needs an enabled
  worker. Travel intervals and home city are explicit owner input.
- Future extensions: city aliases/flight ingestion, travel-time buffers, caps
  spanning arbitrary external meetings, guest-request notification subscriptions,
  native-booking lifecycle subscriptions, manual webhook redrive and richer
  per-attempt delivery history.

## Agent reliability follow-up

The October 3 follow-up adds explicit legacy booking label repair, reviewed
single-to-series conversion, Google/native per-event reminders, Google guest
merges, delegated calendar RSVP, terminal pagination flags, expanded guarded
undo, identity-aware event history, range ICS snapshots and checked native
imports. See the [changelog](https://cal.structure.info/docs/changelog.md) and
API reference for exact provider limits. Conversion and repair never run during
deployment or testing on personal calendars. Native popup notices use the feed;
owner email reminders require opt-in, and ICS imports remain native-only.

## Remaining interoperability and product work

1. Validate named CalDAV clients on desktop and mobile, then expand the documented
   subset based on concrete compatibility findings. Scheduling, VTODO, arbitrary
   filters, sync-token REPORT and client-side split-series edits are not supported.
2. Broaden import/export semantics deliberately: floating/custom timezones,
   unsupported recurrence and Google special-event/conference data currently fail
   instead of being silently changed. ICS is bounded to 1 MiB/1,000 records.
3. Broaden Google conference authoring and complex future-split/conversion support.
   Lossy splits currently fail before writing; supported splits use a reviewable
   plan and durable recovery because Google provides no cross-event transaction.
4. Add browser/OS push delivery and validate native reminder clients; consider
   calendar ownership transfer/deletion, richer recurrence controls and
   custom-field definition versioning as separate product decisions.
5. Keep automatic native/Google two-way synchronization deferred. It needs a clear
   source-of-truth, conflict and deletion policy; explicit independent copies are
   available now.

Exact supported fields, limits, error behavior and authentication are documented
in the API reference. The June booking-only plan under temp-specs is historical.

## Policy delegation and availability follow-up

- Delivered reviewed delegated policy edits (owner opt-in), working-hour API,
  host-wide version guards, idempotent receipts, actor/diff history and dashboard
  owner undo. Permissions stay owner-controlled and off by default.
- Delivered consistent all-day default/explicit Free/Busy across availability,
  strict guest-day-before-night ranking, contextual overlap references and coded
  missing request/subscription errors. See api.md for Google omission and
  complete-read limits. No real event migration is part of this release.
