# OSBuild Architecture for Debian Forge

## Overview
This document details OSBuild's core architecture patterns that Debian Forge must maintain for 1:1 compatibility while extending the system for Debian atomic builds.

## Core OSBuild Components

### 1. Pipeline System
- **Stages**: Modular build steps (e.g., `org.osbuild.rpm`, `org.osbuild.ostree`)
- **Devices**: Block device management (`org.osbuild.loopback`, `org.osbuild.luks2`)
- **Mounts**: Filesystem mounting (`org.osbuild.bind`, `org.osbuild.ext4`)
- **Inputs**: Source management (`org.osbuild.containers`, `org.osbuild.files`)
- **Assemblers**: Output format generation (`org.osbuild.qemu`, `org.osbuild.tar`)

### 2. Build Environment Management
- **Buildroot Isolation**: Uses `bubblewrap` for sandboxed build environments
- **Object Store**: `FsCache` for caching downloaded sources and intermediate artifacts
- **API Communication**: JSON-based inter-process communication via Unix sockets

### 3. OSBuild Composer Integration
- **Web Service Layer**: HTTP APIs for image composition and build orchestration
- **Blueprint System**: High-level image configuration definitions
- **Build Orchestration**: Translates user requests into OSBuild pipeline descriptions
- **Multiple APIs**: Supports lorax-composer API and custom endpoints

## Debian Forge Extensions

### 1. Debian-Specific Stages
- `org.osbuild.debootstrap`: Base Debian filesystem creation
- `org.osbuild.apt`: Debian package management
- `org.osbuild.apt.config`: APT configuration and sources
- `org.osbuild.ostree.commit`: OSTree commit creation for Debian
- `org.osbuild.ostree.deploy`: OSTree deployment for Debian
- `org.osbuild.sbuild`: Debian package building in chroot
- `org.osbuild.debian.source`: Debian source package management

### 2. Build Orchestration System
- **Resource Management**: CPU, memory, and storage allocation
- **Build Queue**: Priority-based build scheduling
- **State Machine**: Build lifecycle management (PENDING → QUEUED → BUILDING → COMPLETED)
- **Artifact Management**: SQLite-based metadata and filesystem organization
- **Environment Management**: Isolated build environment creation and cleanup

### 3. Integration Points
- **OSBuild Pipeline Execution**: Direct integration with OSBuild core
- **Composer API Compatibility**: Extend composer for Debian atomic images
- **Debos Logic Integration**: Adapt debos actions to OSBuild stages

## Compatibility Requirements

### 1:1 OSBuild Compatibility
- **Stage Interface**: Maintain identical stage input/output contracts
- **Pipeline Format**: Use standard OSBuild manifest format
- **Build Environment**: Preserve bubblewrap isolation and object store patterns
- **API Patterns**: Follow existing OSBuild API communication patterns

### Debian-Specific Extensions
- **Package Management**: Replace RPM with APT/dpkg
- **Build Tools**: Replace Mock with sbuild/pbuilder
- **Atomic System**: Add OSTree composition and deployment
- **Web Interface**: Extend composer for Debian atomic workflows

## Architecture Patterns

### 1. Stage Pattern
```python
def run_stage(tree, options):
    # Stage implementation
    # Must follow OSBuild stage contract
    # Return metadata via api.metadata
```

### 2. Build Environment Pattern
```python
# Use bubblewrap for isolation
# Mount essential filesystems (/dev, /sys, /proc)
# Follow OSBuild buildroot patterns
```

### 3. Object Store Pattern
```python
# Use FsCache for source and artifact caching
# Maintain OSBuild cache structure
# Extend for Debian-specific artifacts
```

## Integration Strategy

### Phase 1: Core Compatibility
- Maintain OSBuild stage interface contracts
- Preserve build environment isolation patterns
- Keep object store and caching mechanisms

### Phase 2: Debian Extensions
- Add Debian-specific stages following OSBuild patterns
- Extend build orchestration for Debian workflows
- Integrate debos logic into OSBuild architecture

### Phase 3: Composer Integration
- Test osbuild-composer with Debian stages
- Extend blueprint system for Debian atomic images
- Maintain API compatibility with existing composer ecosystem

## Testing Strategy

### Compatibility Testing
- Validate all Debian stages follow OSBuild patterns
- Test build environment isolation and object store
- Verify pipeline execution compatibility

### Integration Testing
- Test Debian stages in OSBuild pipelines
- Validate build orchestration with OSBuild core
- Test composer integration with Debian workflows

### Performance Testing
- Benchmark Debian stages against OSBuild baselines
- Test resource allocation and build queue performance
- Validate stress testing under concurrent load

## Future Considerations

### OSBuild Updates
- Monitor OSBuild core changes for compatibility
- Plan for OSBuild version upgrades
- Maintain compatibility with new OSBuild features

### Composer Evolution
- Track osbuild-composer development
- Plan integration with new composer features
- Maintain API compatibility across versions

### Debian Ecosystem
- Monitor Debian package management evolution
- Plan for new Debian build tools and standards
- Maintain compatibility with Debian release cycles
