Punch List Skill
Overview
Comprehensive punch list management system for construction projects. Tracks identification and resolution of deficiencies from initial walk-through through final closeout. Supports photo documentation, back-charge management, and professional reporting for inspections and regulatory compliance.
Punch Item Schema
Core Fields
- id (string): Unique identifier, format "PUNCH-{NNN}" (e.g., "PUNCH-001", "PUNCH-042")
- Auto-generated on creation, incremental within project
- Never reused, immutable
- Enables clear reference in conversations and reports
Location Fields (One or more required)
- room_number (string): Room or space identifier (e.g., "Room 107", "306B", "ICU-2")
- Used for healthcare: patient rooms, operating rooms, medication dispensary
- Standard for office/commercial: office numbers, conference rooms
- building_area (string): Larger zone reference (e.g., "East Wing", "3rd Floor", "North Corridor")
- Supports multi-floor, multi-wing projects
- Hierarchical: "Building A > East Wing > 3rd Floor"
- grid_reference (string): Coordinate system, optional (e.g., "Grid C3", "Section 4B")
- Used in large-scale or modular projects
- floor_level (integer): Floor number or level (e.g., 3, -1 for basement)
- Supports vertical organization; assists in access planning
Identification & Documentation
- description (string, required): Clear, specific deficiency description
- Example: "Drywall mud pops in northeast corner, joint at ceiling"
- Example: "Paint scuff on south wall, 5 ft from floor"
- Example: "Nurse call button missing in Room 214"
- Should include location detail within space and visible severity
- trade (string, required): Responsible trade/discipline
- Examples: "Drywall", "Painting", "Electrical", "Plumbing", "HVAC", "Doors & Hardware", "Flooring", "Medical Equipment", "IT/Communications"
- Used to group items and assign to responsible subs
- responsible_sub (string, required): Sub contractor name or entity
- Resolved against {workspace}/subs/ directory
- Example: "ABC Drywall Inc.", "Ready Paint Services", "Smith Plumbing"
- date_identified (date): Date item was discovered
- Auto-populated on creation (today's date)
- Supports historical tracking and aging analysis
- identified_by (string): Name of person who identified the item
- Usually superintendent or foreman
- Accountability and follow-up contact
Status & Workflow
- status (enum): Current state of item
- open: Newly identified, awaiting assignment
- in_progress: Sub notified and work initiated
- completed: Work finished, may be pending inspection
- back_charge: Assigned back-charge (sub failed to correct)
- disputed: Item contested by sub or stakeholder; requires resolution meeting
- date_completed (date, optional): When work was finished
- Populated on transition to "completed"
- Blank until completion
- completed_by (string, optional): Name of person who verified completion
- Usually superintendent or inspector
- Supports audit trail
Priority Classification
- priority (enum): Urgency and impact level
- A (Critical): Safety violation or code non-compliance
- Must be corrected before occupancy
- Examples: Missing handrails, electrical safety hazards, ADA accessibility failures, infection control violations
- Blocks final sign-off
- B (Functional): Affects proper use or function
- Should be corrected before final inspection
- Examples: Non-functioning door, HVAC controls not working, plumbing leaks, paint color mismatch affecting space function
- May delay closeout
- C (Cosmetic): Appearance only, no safety/function impact
- Minor touch-ups acceptable during or after occupancy
- Examples: Small paint scuff, minor drywall finish, cosmetic grout gaps
- Does not block closeout if agreed with owner
Photos & Documentation
- photos (array of objects): Visual documentation
- Each photo object contains:
- filename (string): File path or reference (e.g., "/data/photos/PUNCH-001-1.jpg")
- description (string): What the photo shows (e.g., "Overview of mud pops in NE corner")
- date_taken (date): When photo was captured
- Supports multiple photos per item
- Embedded in .docx reports (with file size limits)
- Clarity: well-lit, straight-on, includes reference object for scale
Back-Charge Tracking
- back_charge_amount (decimal, optional): Dollar amount to charge to sub
- Only populated if status = "back_charge"
- Example: 250.00 (for corrective work cost)
- Supports billing and dispute resolution
- back_charge_sub (string, optional): Sub entity assigned back-charge
- Populated when status = "back_charge"
- May differ from responsible_sub if sub contracted work to another party
- back_charge_reason (string, optional): Why back-charge was issued
- Example: "Sub failed to correct deficiency within agreed timeframe"
- Example: "GC performed corrective work due to sub non-response"
Notes & Communication
- notes (string, optional): Running log of updates, decisions, disputes
- Example: "First notice 1/15. Re-notified 1/22. Completed 1/25. Inspector approved."
- Example: "Sub claims material supplier error. Requested photos from supplier."
- Example: "Owner approved temporary closeout pending final correction in Phase 2."
- Supports audit trail and communication history
Status Workflow
┌─────────────────────────────────────────────────────────┐
│ NORMAL FLOW │
├─────────────────────────────────────────────────────────┤
│ │
│ open ──→ in_progress ──→ completed │
│ ↓ ↓ │
│ └────→ back_charge ────────→┘ (with back-charge amount)│
│ │
│ Any state ──→ disputed (requires resolution) │
│ ↓ │
│ (return to open/in_progress after resolve) │
│ │
└─────────────────────────────────────────────────────────┘
Transitions
- open → in_progress: Sub acknowledged and beginning work (via status update)
- in_progress → completed: Work finished, verified by superintendent (date_completed, completed_by set)
- open/in_progress → back_charge: Sub failed to correct; back-charge issued (amount and reason required)
- back_charge → completed: GC corrected work or sub completed after back-charge warning
- Any state → disputed: Item contested (reason required; typically returns to prior state after resolution)
Completion Statistics Calculations
By Location
- Room/Area Completion % = (completed items in location / total items in location) × 100
- Supports dashboard display: "Room 107: 4/5 items done (80%)"
By Trade
- Trade Completion % = (completed items by trade / total items by trade) × 100
- Supports dashboard display: "Drywall: 12/15 items done (80%)"
By Priority
- Priority A Completion % = (completed A items / total A items) × 100 [must = 100% for final sign-off]
- Priority B Completion % = (completed B items / total B items) × 100
- Priority C Completion % = (completed C items / total C items) × 100 [may be <100% if owner accepts]
Overall Project
- Overall Completion % = (total completed items / total punch items) × 100
- Open Count = items with status = "open"
- In Progress Count = items with status = "in_progress"
- Back-Charge Count = items with status = "back_charge"
- Disputed Count = items with status = "disputed"
Bulk Operations
Bulk Add
User input: "I found 5 items in Room 107: mud pops, paint scuff, missing outlet, cracked tile, missing grout."
Process:
- Extract location: "Room 107"
- Parse items: Create array of 5 items
- Prompt for common fields once: Trade (prompt per item or once for all?)
- If same trade: ask "All drywall?" → apply to all
- If mixed: ask per item or accept trade in bulk input
- Auto-assign responsible_sub: resolve from project subs directory
- Auto-generate IDs: PUNCH-001 through PUNCH-005
- Set all: date_identified = today, identified_by = current user, status = "open", priority = ?
- Save to punch list
Bulk Status Update
User input: "All drywall items in Room 107 are done. Mark them completed."
Process:
- Query punch list: filter by room_number="Room 107" AND trade="Drywall"
- Display matching items for confirmation
- Update all: status = "completed", date_completed = today, completed_by = user
- Save and log bulk update in version_history
Report Generation
.docx Format Options
Header Section
- Project name and address
- Report date and time generated
- Report type: "Punch List by Area" or "Punch List by Trade"
- Superintendent name and signature line
Completion Statistics Section
- Overall Project: X% complete, N items remaining, breakdown by status
- By Area/Location (if grouped by area):
Room 107: 80% (4/5 items) | A: 1/1 | B: 2/2 | C: 1/2
Conference Room: 100% (3/3) | A: 0/0 | B: 2/2 | C: 1/1
- By Trade (if grouped by trade):
Drywall: 75% (9/12) | A: 2/2 | B: 5/6 | C: 2/4
Painting: 90% (9/10) | A: 0/0 | B: 3/3 | C: 6/7
- By Priority:
Priority A (Safety/Code): 100% (8/8) - READY FOR FINAL
Priority B (Functional): 85% (17/20)
Priority C (Cosmetic): 70% (14/20) - Optional for closeout
Items by Area (if option selected)
For each location (Room 107, Room 108, etc.):
- Section Header: Room/Area name, floor level, grid reference if applicable
- Items Table:
| ID |
Description |
Trade |
Sub |
Status |
Priority |
Days Open |
| PUNCH-001 |
Drywall mud pops NE corner |
Drywall |
ABC Drywall |
completed |
B |
8 days |
| PUNCH-002 |
Paint scuff south wall |
Painting |
Ready Paint |
in_progress |
C |
6 days |
- Photos: Thumbnail or full-size embedded below each item (if available)
- Notes: Any back-charge or dispute info, completion dates
Items by Trade (if option selected)
For each responsible sub (ABC Drywall, Ready Paint, etc.):
- Section Header: Sub name, contact info (if in subs directory), total items assigned
- Items Table: Same as above, but sorted by location within trade
- Summary: X/Y items completed, back-charge info
Back-Charge Summary Section (if back-charges exist)
- Total Back-Charge Amount: $XXXX.XX
- Items Flagged:
| ID |
Location |
Description |
Sub |
Amount |
Reason |
| PUNCH-008 |
Room 112 |
Electrical hazard |
Smith Electric |
500.00 |
Non-compliance, GC fix |
| PUNCH-015 |
Room 201 |
HVAC not functional |
ABC Mechanical |
350.00 |
Sub non-response |
Footer
- Project info and contact
- Report generated by: [superintendent name]
- Date/time: [timestamp]
- Page numbers and total pages
- Confidentiality notice if applicable
Healthcare/Senior Care Special Handling
- ADA Items: Flag all Priority A items related to accessibility
- Examples: Grab bars, accessible routes, door widths, bathroom clearances
- Separate section: "ADA Compliance Items — 100% Completion Required"
- Infection Control: Flag items affecting sanitation
- Examples: Shower/tub sealing, hand washing stations, sharps containers, supply storage
- Separate section: "Infection Control Items"
- Nurse Call System: Track all nurse call button installations and functionality
- Separate tracking: "Nurse Call Items — Room-by-Room"
- Report completion status per room
Integration Points
Project Dashboard (/project-dashboard)
- Punch Completion Widget: Overall % complete, trending over time
- By Area Chart: Bar chart showing % complete per room/area
- By Trade Chart: Bar chart showing % complete per sub discipline
- Priority Status: Count of open A/B/C items
- Days Open Trending: Aging analysis; items open >14 days highlighted
- Back-Charge Summary: Total amount, count of flagged items
Daily Report (/daily-report)
- Punch Walk Findings section: Can reference new items identified during day
- Example: "Punch walk identified 3 new items in Room 107 (see punch list PUNCH-041, PUNCH-042, PUNCH-043)"
- Completion Status: Reference punch completion % for area worked that day
- Back-Charge Updates: Log any back-charges issued or resolved
Closeout Workflow
- Pre-Final Punch List: All items listed and assigned; Priority A completion required
- Final Punch List: All Priority A done, Priority B >90% complete; Priority C completion optional if owner approved
- Block Conditions:
- Disputed items halt final sign-off
- Priority A items must = 100%
- All back-charges must be resolved or owner must accept liability
Rules & Constraints
- No Item Deletion: Punch items are immutable history; status changes only (set to "completed" or "back_charge")
- Priority Cannot Decrease: Cannot downgrade A → B or B → C once set (can only escalate: C → B → A if severity discovered)
- Back-Charge Amount Required: If status = "back_charge", back_charge_amount must be >0 and back_charge_reason must be provided
- Completion Metadata: Transition to "completed" requires date_completed and completed_by fields populated
- Location Required: Every item must have at least room_number OR building_area defined
- Responsible Sub Required: Every item must reference a valid sub from subs directory
- Priority A = 100% for Final: Project cannot reach final sign-off without all Priority A items completed
- Disputes Block Closeout: Status = "disputed" requires resolution before completion
Project Intelligence Auto-Population
When project intelligence is loaded, auto-populate punch item fields from the data store to reduce manual entry and improve accuracy.
Location Auto-Resolution
When the user provides a room number or casual location:
- Read
plans-spatial.json → room_schedule → match room_number
- Auto-fill:
building_area from room's building area, floor_level from room's floor level, grid_reference from the building area's grid range
- Example: User says "Room 107" → auto-fill building_area="East Wing", floor_level="Level 1", grid_reference="E-G / 3-5"
Subcontractor Auto-Resolution
When the user names a responsible sub (by name, trade, or casual reference):
- Read
directory.json → subcontractors[] → match by name (partial match) or trade
- Auto-fill:
responsible_sub with full company name, resolve trade if not provided
- Pull foreman name and phone for the sub notification workflow
- Example: User says "Walker" → resolve to "Walker Construction", trade="Excavation/Sitework", foreman="Mike Johnson"
Spec Cross-Reference
When a punch item's trade is identified:
- Read
specs-quality.json → spec_sections[] → find sections matching the trade's CSI division
- Include relevant spec section number and acceptance criteria in the punch item notes for context
- Example: trade="Concrete" → pull Section 03 30 00 tolerances and finish requirements
Drawing Reference
When a punch item location is resolved to a grid/area:
- Read
plans-spatial.json → sheet_cross_references.drawing_index[] → find relevant sheets for that location and discipline
- Include sheet numbers in the punch report for easy plan reference
- Example: Location at Grid E-5, trade="Electrical" → reference sheets E-100, E-101
Schedule Impact Check
When Priority A items exist:
- Read
schedule.json → milestones[] → check if final_completion or substantial_completion milestone is at risk
- If open Priority A count > 0 and closeout milestone is within 30 days → flag schedule risk in punch summary
- Include remaining Priority A items in
/morning-brief when closeout is approaching
Triggers & Activation Phrases
- "punch list"
- "punch item"
- "punchlist"
- "add punch"
- "punch status"
- "generate punch list"
- "closeout"
- "deficiency"
- "back charge" / "back-charge"
- "punch walk"
- "punch report"
Version History
- v1.0.0 (2026-02-17): Initial release. Core CRUD, status workflow, report generation, healthcare specialization.
1---2name: punch-list3description: Track punch list items from identification through completion. Handles item creation, status updates, photo documentation, back-charge tracking, and report generation. Groups by area or trade for efficient closeout. Integrates with project dashboard (completion % by area and trade). Triggers: "punch list", "punch item", "punchlist", "add punch", "punch status", "generate punch list", "closeout", "deficiency", "back charge", "back-charge".4---56# Punch List Skill78## Overview9Comprehensive punch list management system for construction projects. Tracks identification and resolution of deficiencies from initial walk-through through final closeout. Supports photo documentation, back-charge management, and professional reporting for inspections and regulatory compliance.1011## Punch Item Schema1213### Core Fields14- **id** (string): Unique identifier, format "PUNCH-{NNN}" (e.g., "PUNCH-001", "PUNCH-042")15 - Auto-generated on creation, incremental within project16 - Never reused, immutable17 - Enables clear reference in conversations and reports1819### Location Fields (One or more required)20- **room_number** (string): Room or space identifier (e.g., "Room 107", "306B", "ICU-2")21 - Used for healthcare: patient rooms, operating rooms, medication dispensary22 - Standard for office/commercial: office numbers, conference rooms23- **building_area** (string): Larger zone reference (e.g., "East Wing", "3rd Floor", "North Corridor")24 - Supports multi-floor, multi-wing projects25 - Hierarchical: "Building A > East Wing > 3rd Floor"26- **grid_reference** (string): Coordinate system, optional (e.g., "Grid C3", "Section 4B")27 - Used in large-scale or modular projects28- **floor_level** (integer): Floor number or level (e.g., 3, -1 for basement)29 - Supports vertical organization; assists in access planning3031### Identification & Documentation32- **description** (string, required): Clear, specific deficiency description33 - Example: "Drywall mud pops in northeast corner, joint at ceiling"34 - Example: "Paint scuff on south wall, 5 ft from floor"35 - Example: "Nurse call button missing in Room 214"36 - Should include location detail within space and visible severity37- **trade** (string, required): Responsible trade/discipline38 - Examples: "Drywall", "Painting", "Electrical", "Plumbing", "HVAC", "Doors & Hardware", "Flooring", "Medical Equipment", "IT/Communications"39 - Used to group items and assign to responsible subs40- **responsible_sub** (string, required): Sub contractor name or entity41 - Resolved against {workspace}/subs/ directory42 - Example: "ABC Drywall Inc.", "Ready Paint Services", "Smith Plumbing"43- **date_identified** (date): Date item was discovered44 - Auto-populated on creation (today's date)45 - Supports historical tracking and aging analysis46- **identified_by** (string): Name of person who identified the item47 - Usually superintendent or foreman48 - Accountability and follow-up contact4950### Status & Workflow51- **status** (enum): Current state of item52 - **open**: Newly identified, awaiting assignment53 - **in_progress**: Sub notified and work initiated54 - **completed**: Work finished, may be pending inspection55 - **back_charge**: Assigned back-charge (sub failed to correct)56 - **disputed**: Item contested by sub or stakeholder; requires resolution meeting57- **date_completed** (date, optional): When work was finished58 - Populated on transition to "completed"59 - Blank until completion60- **completed_by** (string, optional): Name of person who verified completion61 - Usually superintendent or inspector62 - Supports audit trail6364### Priority Classification65- **priority** (enum): Urgency and impact level66 - **A (Critical)**: Safety violation or code non-compliance67 - Must be corrected before occupancy68 - Examples: Missing handrails, electrical safety hazards, ADA accessibility failures, infection control violations69 - Blocks final sign-off70 - **B (Functional)**: Affects proper use or function71 - Should be corrected before final inspection72 - Examples: Non-functioning door, HVAC controls not working, plumbing leaks, paint color mismatch affecting space function73 - May delay closeout74 - **C (Cosmetic)**: Appearance only, no safety/function impact75 - Minor touch-ups acceptable during or after occupancy76 - Examples: Small paint scuff, minor drywall finish, cosmetic grout gaps77 - Does not block closeout if agreed with owner7879### Photos & Documentation80- **photos** (array of objects): Visual documentation81 - Each photo object contains:82 - **filename** (string): File path or reference (e.g., "/data/photos/PUNCH-001-1.jpg")83 - **description** (string): What the photo shows (e.g., "Overview of mud pops in NE corner")84 - **date_taken** (date): When photo was captured85 - Supports multiple photos per item86 - Embedded in .docx reports (with file size limits)87 - Clarity: well-lit, straight-on, includes reference object for scale8889### Back-Charge Tracking90- **back_charge_amount** (decimal, optional): Dollar amount to charge to sub91 - Only populated if status = "back_charge"92 - Example: 250.00 (for corrective work cost)93 - Supports billing and dispute resolution94- **back_charge_sub** (string, optional): Sub entity assigned back-charge95 - Populated when status = "back_charge"96 - May differ from responsible_sub if sub contracted work to another party97- **back_charge_reason** (string, optional): Why back-charge was issued98 - Example: "Sub failed to correct deficiency within agreed timeframe"99 - Example: "GC performed corrective work due to sub non-response"100101### Notes & Communication102- **notes** (string, optional): Running log of updates, decisions, disputes103 - Example: "First notice 1/15. Re-notified 1/22. Completed 1/25. Inspector approved."104 - Example: "Sub claims material supplier error. Requested photos from supplier."105 - Example: "Owner approved temporary closeout pending final correction in Phase 2."106 - Supports audit trail and communication history107108## Status Workflow109110```111┌─────────────────────────────────────────────────────────┐112│ NORMAL FLOW │113├─────────────────────────────────────────────────────────┤114│ │115│ open ──→ in_progress ──→ completed │116│ ↓ ↓ │117│ └────→ back_charge ────────→┘ (with back-charge amount)│118│ │119│ Any state ──→ disputed (requires resolution) │120│ ↓ │121│ (return to open/in_progress after resolve) │122│ │123└─────────────────────────────────────────────────────────┘124```125126### Transitions1271. **open → in_progress**: Sub acknowledged and beginning work (via status update)1282. **in_progress → completed**: Work finished, verified by superintendent (date_completed, completed_by set)1293. **open/in_progress → back_charge**: Sub failed to correct; back-charge issued (amount and reason required)1304. **back_charge → completed**: GC corrected work or sub completed after back-charge warning1315. **Any state → disputed**: Item contested (reason required; typically returns to prior state after resolution)132133## Completion Statistics Calculations134135### By Location136- **Room/Area Completion %** = (completed items in location / total items in location) × 100137- Supports dashboard display: "Room 107: 4/5 items done (80%)"138139### By Trade140- **Trade Completion %** = (completed items by trade / total items by trade) × 100141- Supports dashboard display: "Drywall: 12/15 items done (80%)"142143### By Priority144- **Priority A Completion %** = (completed A items / total A items) × 100 [**must = 100% for final sign-off**]145- **Priority B Completion %** = (completed B items / total B items) × 100146- **Priority C Completion %** = (completed C items / total C items) × 100 [**may be <100% if owner accepts**]147148### Overall Project149- **Overall Completion %** = (total completed items / total punch items) × 100150- **Open Count** = items with status = "open"151- **In Progress Count** = items with status = "in_progress"152- **Back-Charge Count** = items with status = "back_charge"153- **Disputed Count** = items with status = "disputed"154155## Bulk Operations156157### Bulk Add158User input: *"I found 5 items in Room 107: mud pops, paint scuff, missing outlet, cracked tile, missing grout."*159160Process:1611. Extract location: "Room 107"1622. Parse items: Create array of 5 items1633. Prompt for common fields once: Trade (prompt per item or once for all?)164 - If same trade: ask "All drywall?" → apply to all165 - If mixed: ask per item or accept trade in bulk input1664. Auto-assign responsible_sub: resolve from project subs directory1675. Auto-generate IDs: PUNCH-001 through PUNCH-0051686. Set all: date_identified = today, identified_by = current user, status = "open", priority = ?1697. Save to punch list170171### Bulk Status Update172User input: *"All drywall items in Room 107 are done. Mark them completed."*173174Process:1751. Query punch list: filter by room_number="Room 107" AND trade="Drywall"1762. Display matching items for confirmation1773. Update all: status = "completed", date_completed = today, completed_by = user1784. Save and log bulk update in version_history179180## Report Generation181182### .docx Format Options183184#### Header Section185- Project name and address186- Report date and time generated187- Report type: "Punch List by Area" or "Punch List by Trade"188- Superintendent name and signature line189190#### Completion Statistics Section191- **Overall Project**: X% complete, N items remaining, breakdown by status192- **By Area/Location** (if grouped by area):193 ```194 Room 107: 80% (4/5 items) | A: 1/1 | B: 2/2 | C: 1/2195 Conference Room: 100% (3/3) | A: 0/0 | B: 2/2 | C: 1/1196 ```197- **By Trade** (if grouped by trade):198 ```199 Drywall: 75% (9/12) | A: 2/2 | B: 5/6 | C: 2/4200 Painting: 90% (9/10) | A: 0/0 | B: 3/3 | C: 6/7201 ```202- **By Priority**:203 ```204 Priority A (Safety/Code): 100% (8/8) - READY FOR FINAL205 Priority B (Functional): 85% (17/20)206 Priority C (Cosmetic): 70% (14/20) - Optional for closeout207 ```208209#### Items by Area (if option selected)210For each location (Room 107, Room 108, etc.):211- **Section Header**: Room/Area name, floor level, grid reference if applicable212- **Items Table**:213 | ID | Description | Trade | Sub | Status | Priority | Days Open |214 |----------|----------------------------|------------|----------------|------------|----------|-----------|215 | PUNCH-001| Drywall mud pops NE corner | Drywall | ABC Drywall | completed | B | 8 days |216 | PUNCH-002| Paint scuff south wall | Painting | Ready Paint | in_progress| C | 6 days |217- **Photos**: Thumbnail or full-size embedded below each item (if available)218- **Notes**: Any back-charge or dispute info, completion dates219220#### Items by Trade (if option selected)221For each responsible sub (ABC Drywall, Ready Paint, etc.):222- **Section Header**: Sub name, contact info (if in subs directory), total items assigned223- **Items Table**: Same as above, but sorted by location within trade224- **Summary**: X/Y items completed, back-charge info225226#### Back-Charge Summary Section (if back-charges exist)227- **Total Back-Charge Amount**: $XXXX.XX228- **Items Flagged**:229 | ID | Location | Description | Sub | Amount | Reason |230 |-----------|------------|-------------------|-----------------|---------|------------------------|231 | PUNCH-008 | Room 112 | Electrical hazard | Smith Electric | 500.00 | Non-compliance, GC fix |232 | PUNCH-015 | Room 201 | HVAC not functional| ABC Mechanical | 350.00 | Sub non-response |233234#### Footer235- Project info and contact236- Report generated by: [superintendent name]237- Date/time: [timestamp]238- Page numbers and total pages239- Confidentiality notice if applicable240241### Healthcare/Senior Care Special Handling242- **ADA Items**: Flag all Priority A items related to accessibility243 - Examples: Grab bars, accessible routes, door widths, bathroom clearances244 - Separate section: "ADA Compliance Items — 100% Completion Required"245- **Infection Control**: Flag items affecting sanitation246 - Examples: Shower/tub sealing, hand washing stations, sharps containers, supply storage247 - Separate section: "Infection Control Items"248- **Nurse Call System**: Track all nurse call button installations and functionality249 - Separate tracking: "Nurse Call Items — Room-by-Room"250 - Report completion status per room251252## Integration Points253254### Project Dashboard (`/project-dashboard`)255- **Punch Completion Widget**: Overall % complete, trending over time256- **By Area Chart**: Bar chart showing % complete per room/area257- **By Trade Chart**: Bar chart showing % complete per sub discipline258- **Priority Status**: Count of open A/B/C items259- **Days Open Trending**: Aging analysis; items open >14 days highlighted260- **Back-Charge Summary**: Total amount, count of flagged items261262### Daily Report (`/daily-report`)263- **Punch Walk Findings** section: Can reference new items identified during day264 - Example: "Punch walk identified 3 new items in Room 107 (see punch list PUNCH-041, PUNCH-042, PUNCH-043)"265- **Completion Status**: Reference punch completion % for area worked that day266- **Back-Charge Updates**: Log any back-charges issued or resolved267268### Closeout Workflow269- **Pre-Final Punch List**: All items listed and assigned; Priority A completion required270- **Final Punch List**: All Priority A done, Priority B >90% complete; Priority C completion optional if owner approved271- **Block Conditions**:272 - Disputed items halt final sign-off273 - Priority A items must = 100%274 - All back-charges must be resolved or owner must accept liability275276## Rules & Constraints2772781. **No Item Deletion**: Punch items are immutable history; status changes only (set to "completed" or "back_charge")2792. **Priority Cannot Decrease**: Cannot downgrade A → B or B → C once set (can only escalate: C → B → A if severity discovered)2803. **Back-Charge Amount Required**: If status = "back_charge", back_charge_amount must be >0 and back_charge_reason must be provided2814. **Completion Metadata**: Transition to "completed" requires date_completed and completed_by fields populated2825. **Location Required**: Every item must have at least room_number OR building_area defined2836. **Responsible Sub Required**: Every item must reference a valid sub from subs directory2847. **Priority A = 100% for Final**: Project cannot reach final sign-off without all Priority A items completed2858. **Disputes Block Closeout**: Status = "disputed" requires resolution before completion286287## Project Intelligence Auto-Population288289When project intelligence is loaded, auto-populate punch item fields from the data store to reduce manual entry and improve accuracy.290291### Location Auto-Resolution292When the user provides a room number or casual location:293- Read `plans-spatial.json` → `room_schedule` → match `room_number`294- Auto-fill: `building_area` from room's building area, `floor_level` from room's floor level, `grid_reference` from the building area's grid range295- Example: User says "Room 107" → auto-fill building_area="East Wing", floor_level="Level 1", grid_reference="E-G / 3-5"296297### Subcontractor Auto-Resolution298When the user names a responsible sub (by name, trade, or casual reference):299- Read `directory.json` → `subcontractors[]` → match by name (partial match) or trade300- Auto-fill: `responsible_sub` with full company name, resolve trade if not provided301- Pull foreman name and phone for the sub notification workflow302- Example: User says "Walker" → resolve to "Walker Construction", trade="Excavation/Sitework", foreman="Mike Johnson"303304### Spec Cross-Reference305When a punch item's trade is identified:306- Read `specs-quality.json` → `spec_sections[]` → find sections matching the trade's CSI division307- Include relevant spec section number and acceptance criteria in the punch item notes for context308- Example: trade="Concrete" → pull Section 03 30 00 tolerances and finish requirements309310### Drawing Reference311When a punch item location is resolved to a grid/area:312- Read `plans-spatial.json` → `sheet_cross_references.drawing_index[]` → find relevant sheets for that location and discipline313- Include sheet numbers in the punch report for easy plan reference314- Example: Location at Grid E-5, trade="Electrical" → reference sheets E-100, E-101315316### Schedule Impact Check317When Priority A items exist:318- Read `schedule.json` → `milestones[]` → check if `final_completion` or `substantial_completion` milestone is at risk319- If open Priority A count > 0 and closeout milestone is within 30 days → flag schedule risk in punch summary320- Include remaining Priority A items in `/morning-brief` when closeout is approaching321322## Triggers & Activation Phrases323- "punch list"324- "punch item"325- "punchlist"326- "add punch"327- "punch status"328- "generate punch list"329- "closeout"330- "deficiency"331- "back charge" / "back-charge"332- "punch walk"333- "punch report"334335## Version History336- **v1.0.0** (2026-02-17): Initial release. Core CRUD, status workflow, report generation, healthcare specialization.