You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
295 lines
9.1 KiB
295 lines
9.1 KiB
---
|
|
description: Guards against unauthorized changes to the TimeSafari building
|
|
architecture
|
|
alwaysApply: false
|
|
---
|
|
|
|
# Build Architecture Guard Directive
|
|
|
|
**Author**: Matthew Raymer
|
|
**Date**: 2025-08-20
|
|
**Status**: 🎯 **ACTIVE** - Build system protection guidelines
|
|
|
|
## Purpose
|
|
|
|
Protect the TimeSafari building architecture from unauthorized changes that
|
|
could break the multi-platform build pipeline, deployment processes, or
|
|
development workflow. This directive ensures all build system modifications
|
|
follow proper review, testing, and documentation procedures.
|
|
|
|
## Protected Architecture Components
|
|
|
|
### Core Build Infrastructure
|
|
|
|
- **Vite Configuration Files**: `vite.config.*.mts` files
|
|
- **Build Scripts**: All scripts in `scripts/` directory
|
|
- **Package Scripts**: `package.json` build-related scripts
|
|
- **Platform Configs**: `capacitor.config.ts`, `electron/`, `android/`,
|
|
`ios/`
|
|
- **Docker Configuration**: `Dockerfile`, `docker-compose.yml`
|
|
- **Environment Files**: `.env.*`, `.nvmrc`, `.node-version`
|
|
|
|
### Critical Build Dependencies
|
|
|
|
- **Build Tools**: Vite, Capacitor, Electron, Android SDK, Xcode
|
|
- **Asset Management**: `capacitor-assets.config.json`, asset scripts
|
|
- **Testing Infrastructure**: Playwright, Jest, mobile test scripts
|
|
- **CI/CD Pipeline**: GitHub Actions, build validation scripts
|
|
- **Service Worker Assembly**: `sw_scripts/`, `sw_combine.js`, WASM copy steps
|
|
|
|
## Change Authorization Requirements
|
|
|
|
### Level 1: Minor Changes (Requires Review)
|
|
|
|
- Documentation updates to `BUILDING.md`
|
|
- Non-breaking script improvements
|
|
- Test additions or improvements
|
|
- Asset configuration updates
|
|
|
|
**Process**: Code review + basic testing
|
|
|
|
### Level 2: Moderate Changes (Requires Testing)
|
|
|
|
- New build script additions
|
|
- Environment variable changes
|
|
- Dependency version updates
|
|
- Platform-specific optimizations
|
|
|
|
**Process**: Code review + platform testing + documentation update
|
|
|
|
### Level 3: Major Changes (Requires ADR)
|
|
|
|
- Build system architecture changes
|
|
- New platform support
|
|
- Breaking changes to build scripts
|
|
- Major dependency migrations
|
|
|
|
**Process**: ADR creation + comprehensive testing + team review
|
|
|
|
## Prohibited Actions
|
|
|
|
### ❌ Never Allow Without ADR
|
|
|
|
- **Delete or rename** core build scripts
|
|
- **Modify** `package.json` build script names
|
|
- **Change** Vite configuration structure
|
|
- **Remove** platform-specific build targets
|
|
- **Alter** Docker build process
|
|
- **Modify** CI/CD pipeline without testing
|
|
|
|
### ❌ Never Allow Without Testing
|
|
|
|
- **Update** build dependencies
|
|
- **Change** environment configurations
|
|
- **Modify** asset generation scripts
|
|
- **Alter** test infrastructure
|
|
- **Update** platform SDK versions
|
|
|
|
## Required Validation Checklist
|
|
|
|
### Before Any Build System Change
|
|
|
|
- [ ] **Impact Assessment**: Which platforms are affected?
|
|
- [ ] **Testing Plan**: How will this be tested across platforms?
|
|
- [ ] **Rollback Plan**: How can this be reverted if it breaks?
|
|
- [ ] **Documentation**: Will `BUILDING.md` need updates?
|
|
- [ ] **Dependencies**: Are all required tools available?
|
|
|
|
### After Build System Change
|
|
|
|
- [ ] **Web Platform**: Does `npm run build:web:dev` work?
|
|
- [ ] **Mobile Platforms**: Do iOS/Android builds succeed?
|
|
- [ ] **Desktop Platform**: Does Electron build and run?
|
|
- [ ] **Tests Pass**: Do all build-related tests pass?
|
|
- [ ] **Documentation Updated**: Is `BUILDING.md` current?
|
|
|
|
## Specific Test Commands (Minimum Required)
|
|
|
|
### Web Platform
|
|
|
|
- **Development**: `npm run build:web:dev` - serve and load app
|
|
- **Production**: `npm run build:web:prod` - verify SW and WASM present
|
|
|
|
### Mobile Platforms
|
|
|
|
- **Android**: `npm run build:android:test` or `:prod` - confirm assets copied
|
|
- **iOS**: `npm run build:ios:test` or `:prod` - verify build succeeds
|
|
|
|
### Desktop Platform
|
|
|
|
- **Electron**: `npm run build:electron:dev` and packaging for target OS
|
|
- **Verify**: Single-instance behavior and app boot
|
|
|
|
### Auto-run (if affected)
|
|
|
|
- **Test Mode**: `npm run auto-run:test` and platform variants
|
|
- **Production Mode**: `npm run auto-run:prod` and platform variants
|
|
|
|
### Clean and Rebuild
|
|
|
|
- Run relevant `clean:*` scripts and ensure re-build works
|
|
|
|
## Emergency Procedures
|
|
|
|
### Build System Broken
|
|
|
|
1. **Immediate**: Revert to last known working commit
|
|
2. **Investigation**: Create issue with full error details
|
|
3. **Testing**: Verify all platforms work after revert
|
|
4. **Documentation**: Update `BUILDING.md` with failure notes
|
|
|
|
### Platform-Specific Failure
|
|
|
|
1. **Isolate**: Identify which platform is affected
|
|
2. **Test Others**: Verify other platforms still work
|
|
3. **Rollback**: Revert platform-specific changes
|
|
4. **Investigation**: Debug in isolated environment
|
|
|
|
## Integration Points
|
|
|
|
### With Version Control
|
|
|
|
- **Branch Protection**: Require reviews for build script changes
|
|
- **Commit Messages**: Must reference ADR for major changes
|
|
- **Testing**: All build changes must pass CI/CD pipeline
|
|
|
|
### With Documentation
|
|
|
|
- **BUILDING.md**: Must be updated for any script changes
|
|
- **README.md**: Must reflect new build requirements
|
|
- **CHANGELOG.md**: Must document breaking build changes
|
|
|
|
### With Testing
|
|
|
|
- **Pre-commit**: Run basic build validation
|
|
- **CI/CD**: Full platform build testing
|
|
- **Manual Testing**: Human verification of critical paths
|
|
|
|
## Risk Matrix & Required Validation
|
|
|
|
### Environment Handling
|
|
|
|
- **Trigger**: Change to `.env.*` loading / variable names
|
|
- **Validation**: Prove `dev/test/prod` builds; show environment echo in logs
|
|
|
|
### Script Flow
|
|
|
|
- **Trigger**: Reorder steps (prebuild → build → package), new flags
|
|
- **Validation**: Dry-run + normal run, show exit codes & timing
|
|
|
|
### Platform Packaging
|
|
|
|
- **Trigger**: Electron NSIS/DMG/AppImage, Android/iOS bundle
|
|
- **Validation**: Produce installer/artifact and open it; verify single-instance,
|
|
icons, signing
|
|
|
|
### Service Worker / WASM
|
|
|
|
- **Trigger**: `sw_combine.js`, WASM copy path
|
|
- **Validation**: Verify combined SW exists and is injected; page loads offline;
|
|
WASM present
|
|
|
|
### Docker
|
|
|
|
- **Trigger**: New base image, build args
|
|
- **Validation**: Build image locally; run container; list produced `/dist`
|
|
|
|
### Signing/Notarization
|
|
|
|
- **Trigger**: Cert path/profiles
|
|
- **Validation**: Show signing logs + verify on target OS
|
|
|
|
## PR Template (Paste into Description)
|
|
|
|
- [ ] **Level**: L1 / L2 / L3 + justification
|
|
- [ ] **Files & platforms touched**:
|
|
- [ ] **Risk triggers & mitigations**:
|
|
- [ ] **Commands run (paste logs)**:
|
|
- [ ] **Artifacts (names + sha256)**:
|
|
- [ ] **Docs updated (sections/links)**:
|
|
- [ ] **Rollback steps verified**:
|
|
- [ ] **CI**: Jobs passing and artifacts uploaded
|
|
|
|
## Rollback Playbook
|
|
|
|
### Immediate Rollback
|
|
|
|
1. `git revert` or `git reset --hard <prev>`; restore prior `scripts/` or config
|
|
files
|
|
2. Rebuild affected targets; verify old behavior returns
|
|
3. Post-mortem notes → update this guard and `BUILDING.md` if gaps found
|
|
|
|
### Rollback Verification
|
|
|
|
- **Web**: `npm run build:web:dev` and `npm run build:web:prod`
|
|
- **Mobile**: `npm run build:android:test` and `npm run build:ios:test`
|
|
- **Desktop**: `npm run build:electron:dev` and packaging commands
|
|
- **Clean**: Run relevant `clean:*` scripts and verify re-build works
|
|
|
|
## ADR Trigger List
|
|
|
|
Raise an ADR when you propose any of:
|
|
|
|
- **New build stage** or reorder of canonical stages
|
|
- **Replacement of packager** / packaging format
|
|
- **New environment model** or secure secret handling scheme
|
|
- **New service worker assembly** strategy or cache policy
|
|
- **New Docker base** or multi-stage pipeline
|
|
- **Relocation of build outputs** or directory conventions
|
|
|
|
**ADR must include**: motivation, alternatives, risks, validation plan, rollback,
|
|
doc diffs.
|
|
|
|
## Competence Hooks
|
|
|
|
### Why This Works
|
|
|
|
- **Prevents Build Failures**: Catches issues before they reach production
|
|
- **Maintains Consistency**: Ensures all platforms build identically
|
|
- **Reduces Debugging Time**: Prevents build system regressions
|
|
|
|
### Common Pitfalls
|
|
|
|
- **Silent Failures**: Changes that work on one platform but break others
|
|
- **Dependency Conflicts**: Updates that create version incompatibilities
|
|
- **Documentation Drift**: Build scripts that don't match documentation
|
|
|
|
### Next Skill Unlock
|
|
|
|
- Learn to test build changes across all platforms simultaneously
|
|
|
|
### Teach-back
|
|
|
|
- "What three platforms must I test before committing a build script change?"
|
|
|
|
## Collaboration Hooks
|
|
|
|
### Team Review Requirements
|
|
|
|
- **Platform Owners**: iOS, Android, Electron, Web specialists
|
|
- **DevOps**: CI/CD pipeline maintainers
|
|
- **QA**: Testing infrastructure owners
|
|
|
|
### Discussion Prompts
|
|
|
|
- "Which platforms will be affected by this build change?"
|
|
- "How can we test this change without breaking existing builds?"
|
|
- "What's our rollback plan if this change fails?"
|
|
|
|
## Self-Check (Before Allowing Changes)
|
|
|
|
- [ ] **Authorization Level**: Is this change appropriate for the level?
|
|
- [ ] **Testing Plan**: Is there a comprehensive testing strategy?
|
|
- [ ] **Documentation**: Will BUILDING.md be updated?
|
|
- [ ] **Rollback**: Is there a safe rollback mechanism?
|
|
- [ ] **Team Review**: Have appropriate stakeholders been consulted?
|
|
- [ ] **CI/CD**: Will this pass the build pipeline?
|
|
|
|
---
|
|
|
|
**Status**: Active build system protection
|
|
**Priority**: Critical
|
|
**Estimated Effort**: Ongoing vigilance
|
|
**Dependencies**: All build system components
|
|
**Stakeholders**: Development team, DevOps, Platform owners
|
|
**Next Review**: 2025-09-20
|
|
|