# Purpose

PVE FCLU ("First-class Logical Unit") is a vendor-neutral Proxmox VE storage
framework providing first-class per-virtual-disk volume services over Fibre Channel block storage:
one array LUN per virtual disk, with advanced storage services (snapshots, clones,
QoS, replication) offloaded to the array. Per-vendor drivers (Hitachi, Dell, Pure
Storage, IBM, NetApp, …) plug into a shared generic core.

It generalizes the single-vendor `pve-HitachiBlockPlugin` (the reference
implementation) into a reusable multi-vendor framework.

# Status

Alpha — implemented, packaged, and live-validated on one array.

The migration from `pve-HitachiBlockPlugin` (`ARCHITECTURE.md` §9) is **done**: the
generic core, the Hitachi reference driver, the `type: hitachiblock` plugin, and the
multi-binary Debian packaging are all in tree, with 214 unit tests against
fakes/simulators. Validated live on a Hitachi VSP E590H — data path, snapshots, linked
clones, multi-disk `qm clone`, consistency-group snapshots, the destructive/robustness
battery, and both control planes (embedded REST and Ops Center Configuration Manager).
See `docs/test-plan.md` §5 for per-phase results.

Still alpha because the multi-vendor claim is unproven: `src/PVE/Storage/FCLU/Driver/`
holds exactly one production driver (Hitachi) plus a mock, so the vendor-neutral
abstraction has never been exercised by a second vendor. Replication is designed, not
implemented. `ARCHITECTURE.md` remains the authoritative design.

# References

- ARCHITECTURE.md — the authoritative design.
- docs/architecture/ — the joint multi-model review inputs (brief + Codex + Gemini).
- PVE Storage plugin development guidelines
  https://pve.proxmox.com/wiki/Storage_Plugin_Development
- Sibling project (reference implementation): pve-HitachiBlockPlugin

# Coding

- Seek modularity to simplify maintenance.
- Keep the generic core vendor-neutral; confine vendor specifics to drivers.
- Use semantic versioning (symver).
- Keep documentation always in sync.
- Developer
  * Name: Ciro Iriarte
  * email: ciro.iriarte+software@gmail.com

# Project Context

This project was generated by Claude. The human author (Ciro Iriarte) directed,
reviewed, and is responsible for all content.

# Git Commit Guidelines

- Follow conventional commit format (feat:, fix:, docs:, etc.)
- Keep the subject line under 72 characters.
- Use the `Generated-By:` trailer — this repo's content originates from
  generative AI prompting.
- Include a brief note in the commit body describing the prompt context
  or the change's purpose, so reviewers understand the origin.
- Do NOT remove the Co-Authored-By trailer.
- Always include: Signed-off-by: Ciro Iriarte <ciro.iriarte+software@gmail.com>
