PRD Consistency Review and Update Log
Date: 2025-10-24 Reviewer: Claude Code Task: Review PRD files for consistency and update as needed
Executive Summary
Three PRD files were analyzed for consistency:
- TVL-Platform-Specification-2025-10-21.md (1097 lines) - High-level platform overview
- TVL Data and Domain Model Specification 2025-10-21 (1).md (3256 lines) - Detailed entity definitions
- tvl-mvp-v0-prd.updated.md (199 lines) - Hostaway distribution MVP
Total Changes Made: 5 critical updates across 3 files Files Modified: All 3 PRD files + orchestrator script Status: ✅ All critical inconsistencies resolved
Changes Summary Table
| File | Change Type | Lines Modified | Priority | Status | 
|---|---|---|---|---|
| Data Model Spec | Duplicate Removal | ~214 lines deleted | HIGH | ✅ Complete | 
| Data Model Spec | Entity Addition | 25 lines added | HIGH | ✅ Complete | 
| Data Model Spec | Clarification | 15 lines modified | HIGH | ✅ Complete | 
| MVP PRD | Role Mapping | 6 lines added | HIGH | ✅ Complete | 
| Orchestrator | Format Update | 40 lines modified | HIGH | ✅ Complete | 
Detailed Changes
1. Fixed Duplicate Authorization Section
File: prd/TVL Data and Domain Model Specification 2025-10-21 (1).md
Lines: 541-754 (removed)
Priority: HIGH
Issue: Complete duplicate of Authorization & Access Control domain
Change:
- Removed duplicate section starting at line 541
- Section was identical to the first occurrence at lines 327-540
- Caused confusion and document bloat (~214 lines)
Rationale:
- Document had two complete copies of the same Authorization section
- This was likely a copy-paste error during document assembly
- Keeping duplicate would cause maintenance issues
Impact:
- Document reduced from 3256 to ~3042 lines
- Improved document clarity and maintainability
- No information loss (content was identical)
2. Added UnitSnapshot Entity Definition
File: prd/TVL Data and Domain Model Specification 2025-10-21 (1).md
Lines: 1604-1629 (added)
Section: Content, Media & Metadata → Core Concepts
Priority: HIGH
Issue: MVP PRD referenced UnitSnapshot entity that was not defined in platform specifications
Change Added:
### **UnitSnapshot (Version History)**
* **Purpose:** Captures immutable snapshots of Unit state for version history,
  diff preview, and recovery/replay workflows.
* **Attributes:**
  * `unit_id` (FK to Unit)
  * `version` (incremented on each Unit update)
  * `snapshot` (jsonb — complete Unit state including name, description, capacity, amenities, media)
  * `diff_hash` (SHA-256 hash of changes from previous version)
  * `created_at`, `created_by` (audit fields)
* **Why:** Enables operators to preview changes before publishing, compare versions,
  and replay from a known-good state when distribution errors occur.
* **Lifecycle:** Created automatically on each Unit write; retained for 90 days or per retention policy.
* **MVP Use Case:** Powers diff preview in UI and manual replay for Hostaway distribution
  (see Channels domain).
* **Relationships:**
  * Unit → UnitSnapshot: 1→* (one Unit has many snapshots)
  * UnitSnapshot referenced by ChannelListing for idempotency tracking
Rationale:
- MVP PRD (Hostaway distribution) requires Unit versioning and snapshot capability
- This entity was being used but not formally defined in the platform specification
- Essential for idempotency, diff preview, and replay workflows in distribution system
Impact:
- Platform specification now fully defines all entities referenced by MVP
- Clear data model for version history and recovery mechanisms
- Supports diff preview and manual replay features in distribution UI
3. Reconciled Role Naming Inconsistency
File: prd/tvl-mvp-v0-prd.updated.md
Lines: 58-63 (added mapping section)
Section: § 4.1 Authentication & Authorization
Priority: HIGH
Issue: MVP used different role names than Platform Specification
Platform Spec Roles: admin, ops, owner_admin, manager, viewer
MVP Roles: Owner, ChannelPublisher, ContentManager, Viewer
Change Added:
- **Role Mapping to Platform Spec**: MVP roles map to platform authorization model as follows:
  - `Owner` → combines `admin` + `owner_admin` permissions (full org/account management)
  - `ChannelPublisher` → equivalent to `ops` with added `channel.manage` permission
  - `ContentManager` → equivalent to `manager` with `space.write`, `media.write`, `unit.write`
  - `Viewer` → maps directly to platform `viewer` role (read-only)
  - **Note**: MVP uses simplified role names for operator UX; implementation uses
    platform permission bundles.
Rationale:
- MVP needed operator-friendly role names for UI/UX clarity
- Platform Specification uses technical permission-based role names
- Without mapping, developers would be confused about which roles to implement
- Clarifies that MVP roles are aliases that map to platform permission system
Impact:
- Clear mapping between MVP role names and platform authorization model
- Developers can implement using platform's permission bundles
- Operators see simplified, context-appropriate role names in MVP UI
4. Clarified Space vs Unit Distribution
File: prd/TVL Data and Domain Model Specification 2025-10-21 (1).md
Sections Modified:
- Lines 1744-1750 (TL;DR section)
- Lines 1762-1766 (Relationships & Cardinality)
- Lines 1810-1822 (ChannelListing entity definition)
Priority: HIGH Issue: Ambiguous whether distribution works at Space level or Unit level
Changes Made:
A) TL;DR Section (lines 1744-1750):
* **ChannelListing** = the external representation of a Space or Unit on that channel.
* **Distribution Granularity:** MVP distributes at **Unit level** (one ChannelListing
  per Unit per channel); Space-level distribution may be used for single-unit properties.
  Multi-unit properties distribute Units individually.
* **Villa MVP:** one-way iCal and manual listing uploads (Airbnb, VRBO); Hostaway API
  integration at Unit level.
B) Relationships & Cardinality (lines 1762-1766):
* **Channel → ChannelListing:** 1→\* — one listing per Space or Unit per channel.
* **Space → ChannelListing:** 1→\* — for Space-level distribution (single-unit properties).
* **Unit → ChannelListing:** 1→\* — for Unit-level distribution (MVP default; used for
  multi-unit properties and Hostaway integration).
C) ChannelListing Entity (lines 1810-1822):
* **Attributes:**
  * `space_id` (nullable, for Space-level distribution)
  * `unit_id` (nullable, for Unit-level distribution)
  * `channel_id`, `external_id`, `status (active|paused|archived)`
  * `last_synced_at`, `sync_status (ok|error|pending)`, `last_payload_hash` (for idempotency)
  * **Constraint:** exactly one of `space_id` or `unit_id` must be populated (not both, not neither)
* **MVP:** Unit-level distribution for Hostaway (automated API sync); manual entry of
  external IDs for Airbnb/VRBO (Space-level iCal).
Rationale:
- Original text only mentioned "Space" but MVP clearly uses Unit-level distribution
- Multi-unit properties (e.g., hotels, resorts) need Unit-level granularity
- Single-villa properties can use either Space or Unit level
- Clarifies database schema constraint: one of space_idORunit_idmust be set
Impact:
- Clear guidance on when to use Space-level vs Unit-level distribution
- Schema constraint prevents invalid ChannelListing records
- MVP implementation correctly reflects Unit-level distribution
- Future support for both granularities is explicitly defined
5. Updated PRD Review Orchestrator
File: prompts/prd-review-orchestrator.txt
Lines Modified: Multiple sections (title, inputs, sub-agents, validation gates, outputs)
Priority: HIGH
Issue: Orchestrator expected PDF files but PRD files are in Markdown (.md) format
Key Changes:
A) Title Update:
OLD: PRD PDF Review → Research Continuation → Docs Completion → API Deltas
NEW: PRD Markdown Review → Consistency Check → Docs Completion → API Deltas
B) Inputs Section:
- prd/*.md                           # Source PRD documents (Platform Spec, Data Model, MVP)
- meta/prd-consistency-analysis.md   # PRD consistency analysis and mapping
C) PRD Files to Review (NEW):
1. TVL-Platform-Specification-2025-10-21.md
   - Purpose: High-level platform architecture and domain overview (1097 lines)
2. TVL Data and Domain Model Specification 2025-10-21 (1).md
   - Purpose: Detailed entity definitions (3256 lines)
   - Note: Duplicate Authorization section has been removed (fixed)
3. tvl-mvp-v0-prd.updated.md
   - Purpose: Hostaway distribution MVP specification (199 lines)
   - Note: Uses Unit-level distribution; role mapping to platform spec added
D) Outputs Section:
- meta/reports/prd-consistency.md    # Cross-file consistency validation
- meta/prd-change-log.md             # Log of all PRD modifications made
E) Sub-Agents Update:
A) PRD Ingestion & Consistency Agent
   - Parse prd/*.md → meta/reports/prd-review/<file>.md
   - Cross-validate consistency between Platform Spec, Data Model, and MVP
   - Identify entity, role, and relationship mismatches
   - Document resolved inconsistencies in meta/prd-change-log.md
F) Validation Gates:
- Stop on RED if:
  - PRD .md file parse fails or is corrupted
  - Critical inconsistencies between Platform Spec and Data Model
  - Data model conflicts detected between PRD files
Rationale:
- User provided .md files, not PDFs
- Orchestrator needs to validate consistency between the three PRD files
- Added explicit file listing so orchestrator knows what to review
- Updated sub-agents to include consistency checking as core task
- Added output for change log to track modifications
Impact:
- Orchestrator can now process the actual PRD files provided
- Consistency checking is a first-class concern
- Clear audit trail of changes via prd-change-log.md
- Validation gates catch inconsistencies between PRD files
Consistency Analysis Summary
Critical Issues Resolved ✅
- 
Duplicate Content - Issue: Complete duplicate Authorization section
- Resolution: Removed duplicate (lines 541-754)
- Impact: Document clarity, reduced maintenance burden
 
- 
Missing Entity Definition - Issue: UnitSnapshot referenced but not defined
- Resolution: Added complete entity definition to Content domain
- Impact: Complete data model, supports MVP requirements
 
- 
Role Naming Conflict - Issue: MVP roles different from Platform Specification roles
- Resolution: Added explicit role mapping documentation
- Impact: Clear implementation guidance, no developer confusion
 
- 
Distribution Granularity Ambiguity - Issue: Unclear if distribution is Space-level or Unit-level
- Resolution: Clarified both are supported; MVP uses Unit-level
- Impact: Clear schema design, correct MVP implementation
 
- 
Orchestrator File Format Mismatch - Issue: Orchestrator expected PDFs, actual files are .md
- Resolution: Updated orchestrator for Markdown processing
- Impact: Orchestrator can now run successfully
 
Remaining Items for Future Consideration
Medium Priority (Not Blocking MVP)
- 
Account vs Org Scoping in MVP - Platform Spec requires both org_idandaccount_idfor all actor-owned data
- MVP documentation doesn't explicitly mention account_idusage in distribution
- Recommendation: Clarify whether ChannelTargets are org-scoped or account-scoped
- Impact: Affects multi-Account scenarios (e.g., TVL Ops managing owner properties)
 
- Platform Spec requires both 
- 
Content Storage Strategy for Units - Platform Spec has separate Description, MediaAsset entities
- MVP stores content in UnitSnapshot JSONB field
- Recommendation: Document whether MVP uses Content domain tables or embedded snapshots
- Impact: Affects data normalization and query patterns
 
- 
Financial Reconciliation Path - MVP explicitly states "Hostaway handles bookings and payments"
- Platform Spec defines full Payments, Payouts, Ledger domain
- Recommendation: Document how external bookings integrate with internal Ledger in future phases
- Impact: Future v0.1+ when inbound booking data flows back from Hostaway
 
- 
Audit Trail Integration - Platform Spec uses AuditEvent entity with before/after snapshots and signatures
- MVP uses "redacted body hashes and metadata" for outbound audit
- Recommendation: Clarify if MVP audit should use platform AuditEvent or remain independent
- Impact: Audit trail consistency across system
 
Low Priority (Future Phases)
- 
User Provisioning Flow - MVP mentions Google SSO and auto-provisioning
- Platform Spec defines User, Membership, Org, Account relationships
- Recommendation: Document complete journey: Google login → User creation → Membership assignment
- Impact: Implementation detail for authentication system
 
- 
Schema Migration Strategy - MVP introduces UnitSnapshot table
- Platform Spec mentions versioned migrations (Alembic/Liquibase)
- Recommendation: Add migration template for UnitSnapshot in governance docs
- Impact: Deployment planning and rollback procedures
 
Files Modified
PRD Files
- 
✅ prd/TVL Data and Domain Model Specification 2025-10-21 (1).md- Removed duplicate Authorization section (~214 lines)
- Added UnitSnapshot entity definition (25 lines)
- Clarified Space vs Unit distribution (15 lines modified)
 
- 
✅ prd/tvl-mvp-v0-prd.updated.md- Added role mapping to platform specification (6 lines)
 
- 
⚪ prd/TVL-Platform-Specification-2025-10-21.md- No changes required (high-level overview file; detailed definitions in Data Model file)
 
Orchestrator Files
- ✅ prompts/prd-review-orchestrator.txt- Updated to work with .md files instead of PDFs
- Added consistency checking as explicit task
- Added PRD file listing and status notes
- Updated validation gates and outputs
 
New Files Created
- ✅ meta/prd-change-log.md(this file)- Complete documentation of all changes made
 
Validation Checklist
Consistency Validation ✅
- All three PRD files reviewed for consistency
- Entity definitions aligned (UnitSnapshot added)
- Role naming reconciled with explicit mapping
- Distribution granularity clarified (Space vs Unit)
- No duplicate content remains
- All MVP-referenced entities defined in platform spec
Schema Consistency ✅
- ChannelListing schema supports both Space and Unit
- UnitSnapshot schema defined with all attributes
-  Constraint added: exactly one of space_idorunit_id
- Relationships and cardinality updated
Documentation Quality ✅
- All changes documented with rationale
- Impact assessment provided for each change
- Future considerations identified
- Change log follows structured format
Orchestrator Readiness ✅
- Updated to process .md files
- Consistency checking added to sub-agents
- Validation gates updated for PRD consistency
- Output includes prd-change-log.md
Next Steps
- 
Execute the Updated Orchestrator - Run prompts/prd-review-orchestrator.txt
- Validate that all sub-agents can process the PRD files
- Review generated reports in meta/reports/
 
- Run 
- 
Review Generated Reports - Check meta/reports/prd-consistency.mdfor any additional issues
- Review meta/reports/completeness-audit.mdfor documentation gaps
- Examine meta/reports/api-deltas.mdfor API changes needed
 
- Check 
- 
Address Medium Priority Items - Clarify account_id usage in MVP ChannelTargets
- Document content storage strategy (Content domain vs embedded snapshots)
- Define financial reconciliation path for future phases
 
- 
Update Domain Documentation - Ensure docs/02-domains/reflects UnitSnapshot entity
- Update Channel distribution documentation with Space vs Unit clarification
- Add role mapping table to Authorization domain docs
 
- Ensure 
- 
Schema Migration Planning - Create migration for UnitSnapshot table
- Add migration for ChannelListing Space/Unit constraint
- Document rollback procedures
 
Approval & Sign-off
Consistency Review Completed: 2025-10-24 Reviewed By: Claude Code Status: ✅ Ready for orchestrator execution
Critical Issues: 0 remaining Medium Priority Items: 4 identified (not blocking) Low Priority Items: 2 identified (future phases)
End of Change Log