SeaweedFS was scoped as primary because it looked like the only candidate preserving OIDC console login. Measured: its admin UI is Apache-2.0 but its identity-provider integration is not — console SSO sits behind the per-TB commercial licence, alongside point-in-time recovery and automatic EC repair. The free build gives OIDC on the S3 API via STS and a console authenticated by local username and password. So the answer to the gating question is that no candidate preserves the current feature set for free, which this effort had written down as a possible outcome. Reopened across three candidates with the requirement-by-requirement evidence in 01. Two corrections to what the overview recorded. RustFS is not a binary-level drop-in retaining existing data: API and on-disk compatibility are separate paths and the on-disk one is preview-scoped. And it carries an open defect in the credential path the bucket provision depends on, which gates it specifically. Nothing graduates before two measurements named in 01: whether an authenticating proxy is an acceptable answer to console SSO, and which S3 endpoints consumers actually call — the latter because Garage does not implement the full span and cannot be ranked until that is counted.
01-RESEARCH
Investigations that have not yet hardened into design.
Structure
Each effort lives in NNN-descriptive-name/ and must contain 00-overview.md, carrying its
state in YAML frontmatter and a prose summary below it:
---
status: active | graduated | abandoned
initiated: YYYY-MM-DD
touches: [] # design docs, subsystems or areas the effort bears on
became: [] # required when status is terminal — what it turned into
---
The prose says what is being investigated, why, and what it touches. It does not restate the status — status lives in one place, and two places is one too many.
Further documents in the same folder hold the work itself: notes, evidence, option analyses, draft designs.
Lifecycle
| status | Meaning |
|---|---|
active |
Investigation in progress. |
graduated |
Checked against 00-META, decided in 02-DECISIONS/, and specified in 03-DESIGN — see became:. |
abandoned |
Stopped or superseded. Nothing is deleted. |
An effort graduates by producing a decision record and a 03-DESIGN entry. It is abandoned
in place — never deleted. What was rejected, and why, is the more expensive half to
rediscover.
Starting and closing efforts is playbook territory:
00-META/process/01-research.md and
02-graduation.md.
Rules
- Markdown only. Do not skip or reuse a sequence number.
- Evidence, not assertion. An effort that measured nothing has not finished.
- Research describes real observations but never identifies the mesh it observed. The shape of a finding survives anonymisation intact.