# Release Notes - v0.1.11

**Fulpack Archive Module & Crucible Sync**

- **Release Date**: November 19, 2025
- **Lifecycle Phase**: Alpha
- **Version**: 0.1.11

---

## 🌟 Highlights

PyFulmen v0.1.11 introduces the **Fulpack** archive module, a security-first canonical interface for archive operations (`tar`, `tar.gz`, `zip`, `gzip`). It also includes a major infrastructure update with **Crucible v0.2.20** integration, bringing the latest ecosystem standards and schemas.

### 📦 Fulpack Archive Module

The new `pyfulmen.fulpack` module provides safe, consistent archive operations with built-in security guardrails.

- **Canonical API**: Unified `create`, `extract`, `scan`, `verify`, `info` operations across all formats
- **Security by Default**:
  - **Zip Slip Protection**: Mandatory path traversal prevention
  - **Zip Bomb Guard**: Decompression bomb detection with configurable limits
  - **Symlink Validation**: Prevention of escaping symlinks
  - **Checksum Verification**: FulHash-integrated checksums (including CRC32)
- **Format Support**:
  - `tar` (Uncompressed)
  - `tar.gz` / `tgz` (Common)
  - `zip` (Common)
  - `gzip` (Single file compression)
- **Pluggable Architecture**: Extensible format registry for future formats (7z, brotli, etc.)

### 🔐 FulHash Updates (v0.1.11)

Enhanced hashing capabilities for legacy interoperability and cloud integration:

- **New Algorithms**:
  - `crc32`: Standard zlib CRC32 (ZIP/GZIP compatible)
  - `crc32c`: Hardware-accelerated Castagnoli CRC32 (Google/Cloud storage) via `google-crc32c`
- **Verification API**: New `verify(source, expected_digest)` helper for one-line integrity checks
- **MultiHash API**: New `multi_hash(source, algorithms)` helper for computing multiple digests in a single pass
- **Integration**: Fulpack now uses FulHash for all internal checksum operations

### 🔄 Crucible v0.2.20 Sync

- **Infrastructure Update**: Synced latest assets from Crucible SSOT
- **DevSecOps Standards**: New secrets management standards and schemas
- **Logging Schema**: Updates to observability logging schema
- **Type Generation**: Updated generated types/options for Fulpack and FulHash modules

---

## 📋 Changelog

### Added

- **Fulpack Archive Module**: Enterprise-grade archive operations with security-by-default
  - **Canonical API**: Unified `create`, `extract`, `scan`, `verify`, `info` operations for tar.gz, zip, gzip
  - **Security Guardrails**: Mandatory path traversal protection (Zip Slip), decompression bomb detection (Zip Bomb), symlink validation
  - **Format Support**: `tar`, `tar.gz`, `zip`, `gzip`
  - **Extensible Architecture**: Pluggable format registry
  - **Crucible Compliance**: Validated against v0.2.13 programmatic fixtures
- **FulHash Module Updates**: Added CRC32 support and verification helpers
  - **CRC32/CRC32C**: New algorithms supported via zlib (legacy) and google-crc32c (HW accelerated)
  - **Verification**: `verify(source, expected_digest)` helper
  - **MultiHash**: `multi_hash(source, algorithms)` for single-pass multiple digest computation
  - **Integration**: Fulpack now uses FulHash for file-level checksums

### Changed

- **Crucible Sync (v0.2.20)**: Updated infrastructure with latest ecosystem standards
  - New DevSecOps secrets management standards and schemas
  - Updated logging observability schema
  - Updated generated types and options for Fulpack module

---

## 📊 Quality Metrics

- **Tests**: 1707 tests passing (50 new fulpack tests, 6 new fulhash tests)
- **Coverage**: 93% overall (84% coverage on new fulpack module)
- **Security**: Verified protection against Zip Slip and Zip Bomb attacks
- **Documentation**: Comprehensive module guide, examples, and README updates

---

## 🚀 Migration Guide

**Fulpack Usage**:

```python
from pyfulmen import fulpack
from pyfulmen.fulpack import ArchiveFormat

# Create archive
fulpack.create(
    source=["src/", "docs/"],
    output="release.tar.gz",
    format=ArchiveFormat.TAR_GZ
)

# Verify archive (security checks + checksums)
result = fulpack.verify("release.tar.gz")
if result.valid:
    print("Archive is safe!")
```

**FulHash Verification**:

```python
from pyfulmen import fulhash

# Verify file against expected checksum
if fulhash.verify("data.bin", "xxh3-128:abc123..."):
    print("Integrity verified")

# Compute multiple hashes at once
digests = fulhash.multi_hash(
    "data.bin",
    [fulhash.Algorithm.SHA256, fulhash.Algorithm.CRC32C]
)
```
