# Deployment Record - 2026-03-30

- Artifact: `package/calendar-plugin-0.1.0.zip`
- Manifest: `package/calendar-plugin-0.1.0.manifest.sha256`
- Source revision: SVN r405 (`https://svn.chezstephens.org.uk/adrian/tools/calendar_wp_plugin`)
- Deploy target host: `cs.chezstephens.org.uk`
- Deploy target path: `/var/www/wordpress/wp-content/plugins/calendar-plugin`
- Operator: Codex (with user-approved escalations)
- Timestamp (UTC): 2026-03-30

## Pre-deploy Gates (Local)
- `compatibility-layer/e2e_wp_emulation.php`: PASS
- `compatibility-layer/ui_e2e.sh`: PASS
- `compatibility-layer/smoke.sh`: PASS
- `fixture/security_smoke.sh`: PASS

## Packaging Validation
- Archive root contains single plugin folder: PASS (`calendar-plugin/`)
- Main entry present: PASS (`calendar-plugin/calendar-plugin.php`)
- Runtime-only source (`code/`) packaged: PASS

## Deployment Procedure
1. Uploaded artifact+manifest to remote staging `/tmp/calendar-plugin-0.1.0`.
2. Extracted and synced to plugin path with `rsync -a --delete`.
3. Activated plugin via WP-CLI (`wp plugin activate calendar-plugin --allow-root`).

## Exact-Match Validation
- Compared artifact and deployed SHA256 manifests (relative paths normalized).
- `diff -u` returned no differences.
- Result: PASS (`REDEPLOY_HASH_MATCH_OK`).

## Post-deploy Checks
- `/calendar.ics` -> `200`
- `/caldav/` (unauthenticated) -> `401`
- `/wp-json/calendar/v1/health` -> `200`
- `/wp-json/calendar/v1/public/ics` -> `200`
- Authenticated CalDAV checks:
  - `/caldav/` -> `405`
  - `PROPFIND /caldav/calendars/public/` -> `207`
  - `GET /caldav/calendars/public/deploy-smoke.ics` -> `200`

## Backup/Rollback
- Previous deployment backup path (if existed):
  - `/var/www/wordpress/wp-content/plugins/calendar-plugin.backup.prev`

## Redeploy Update (Same Day)
- Redeployed latest local UI/auth shortcode fixes from current workspace artifact.
- Remote sync to `/var/www/wordpress/wp-content/plugins/calendar-plugin` completed.
- Exact-match manifest validation re-run: PASS (`DEPLOY_AND_HASH_MATCH_OK`).
- Stale duplicate plugin directory removed:
  - `/var/www/wordpress/wp-content/plugins/calendar-plugin.backup.prev`
- Remote validation after cleanup:
  - only `calendar-plugin` present under plugins directory
  - `wp plugin list` shows `calendar-plugin,active,0.1.0`
  - `GET /calendar.ics` -> `200`
  - `GET /wp-json/calendar/v1/health` -> `200`
