An external audit read main from the raw files on 2026-08-28, deliberately
bypassing GitHub's page cache, and its verdict is not the one this project has
been answering.
| axis |
|
|
| doc ↔ code fidelity |
9/10 |
exceptionally strong |
| honesty about limits |
9.5/10 |
probably this project's strongest point |
| maintainer documentation |
9/10 |
rich and traceable |
| user documentation |
6.5/10 |
too close to the internal logic |
| first user success |
6/10 |
still too much friction |
| navigation |
5.5/10 |
the mass is becoming the problem |
| FR/EN |
6/10 |
good intent, visible inconsistencies |
The problem is no longer missing documentation. It is nearly the opposite.
This project writes documentation as a scientific proof of how it works, and a
newcomer wants first to accomplish something.
The one-line diagnosis, and it is the sentence to keep: the code simplified use
faster than the documentation simplified its story. 0.11 shipped
feint.yaml + feint up + feint down, and the front door still teaches the
0.10 sequence.
What the audit confirms, and it is worth stating
The code → artefacts → proofs → documentation chain is real and it works.
feint docs --check rebuilds or checks coverage, route counts, the serve banner,
contract policies, prerequisites, install commands, client versions, the
confidence page, the routes reference, status and the feint.yaml reference —
and compares artefacts against the routes actually mounted, exiting 2 on drift.
docs/environment.md is generated from the internal/environment schema, so a
field added in code without a doc update fails the check. A test asserts that a
binary named in the docs is really produced by the release workflow, with the
Windows case written out. Another compares dispatched commands against --help,
because shapes once existed in code and not in help.
Keep all of that. None of what follows touches it.
The three depths the documentation does not yet have
30 seconds → I understand feint and run my first apply
10 minutes → I understand runtimes, providers, and the limits that matter
expert → conformance, contracts, evidence, corpus, shapes, drift, proxy,
and the limits operation by operation
Today it goes from 30 seconds to expert in one step.
The ordered plan
| priority |
action |
issue |
| P0 |
the README's promise cannot claim a client the emulator refuses |
the matrix issue below |
| P0 |
feint up becomes the Quick Start, on a stack small enough to read |
the onboarding issue below |
| P0 |
the three stale documents |
#403, already open, and the audit reached it independently |
| P1 |
user commands separated from maintainer commands |
|
| P1 |
a docs/README.md index |
|
| P1 |
a simplified confidence matrix in the README |
|
| P1 |
limits.md: a 30-line summary above the 3450-line record |
|
| P1 |
the Quick Start generated per locale, FR and EN |
|
| P2 |
docs/ restructured into guides / reference / concepts / development |
|
| P2 |
incident narratives moved to design notes |
|
| P2 |
the provider × client × capability matrix generated |
|
| P2 |
executable Markdown examples checked in CI |
|
The four findings worth quoting, because each is measured
1. The hero line contradicts the confidence page. README.md:41 says "Run
your Terraform against Scaleway, Outscale or Exoscale"; docs/confidence.md:48
says "A Terraform run against Exoscale — no, and refused rather than
half-served"; and feint up refuses iac.engine: terraform for that pack
before a process starts. This is exactly the class this project's own doc gates
exist to prevent, and none of them can see it: they check numbers, not claims.
2. The Quick Start is not copyable. feint start / eval "$(feint env scaleway)" / terraform apply — in which directory, with which main.tf, with
which provider? The Apply complete! shown underneath is not reachable from the
three lines above it. Meanwhile examples/stacks/scaleway/feint.yaml exists and
feint up consumes it directly.
3. The example stack is 625 lines — two VPCs, several networks, ACLs, groups,
a bastion, web and app tiers, an LB, a gateway, IPAM, placement groups, volumes,
snapshots, an image, an IAM SSH key, cloud-init. It is an excellent
qualification stack and a poor first example, and it is currently asked to
be both.
4. The French README carries an English Quick Start. Not an oversight — the
generator injects the same English block into both, and its comment says a
command needs no translation. True for commands; the block also contains prose:
"On your machine", "In CI, or anywhere Docker runs". The technical drift was
solved at the cost of an editorial one.
What this issue asks for, and what it does not
It does not ask for more documentation. It asks for a hierarchy, and it says
so as the audit did: stop adding user documentation until the hierarchy is
clear.
No honesty is lost anywhere below — what changes is when a reader is asked to
absorb which fact.
An external audit read
mainfrom the raw files on 2026-08-28, deliberatelybypassing GitHub's page cache, and its verdict is not the one this project has
been answering.
The problem is no longer missing documentation. It is nearly the opposite.
This project writes documentation as a scientific proof of how it works, and a
newcomer wants first to accomplish something.
The one-line diagnosis, and it is the sentence to keep: the code simplified use
faster than the documentation simplified its story. 0.11 shipped
feint.yaml+feint up+feint down, and the front door still teaches the0.10 sequence.
What the audit confirms, and it is worth stating
The
code → artefacts → proofs → documentationchain is real and it works.feint docs --checkrebuilds or checks coverage, route counts, the serve banner,contract policies, prerequisites, install commands, client versions, the
confidence page, the routes reference, status and the
feint.yamlreference —and compares artefacts against the routes actually mounted, exiting 2 on drift.
docs/environment.mdis generated from theinternal/environmentschema, so afield added in code without a doc update fails the check. A test asserts that a
binary named in the docs is really produced by the release workflow, with the
Windows case written out. Another compares dispatched commands against
--help,because
shapesonce existed in code and not in help.Keep all of that. None of what follows touches it.
The three depths the documentation does not yet have
Today it goes from 30 seconds to expert in one step.
The ordered plan
feint upbecomes the Quick Start, on a stack small enough to readdocs/README.mdindexlimits.md: a 30-line summary above the 3450-line recorddocs/restructured into guides / reference / concepts / developmentThe four findings worth quoting, because each is measured
1. The hero line contradicts the confidence page.
README.md:41says "Runyour Terraform against Scaleway, Outscale or Exoscale";
docs/confidence.md:48says "A Terraform run against Exoscale — no, and refused rather than
half-served"; and
feint uprefusesiac.engine: terraformfor that packbefore a process starts. This is exactly the class this project's own doc gates
exist to prevent, and none of them can see it: they check numbers, not claims.
2. The Quick Start is not copyable.
feint start/eval "$(feint env scaleway)"/terraform apply— in which directory, with whichmain.tf, withwhich provider? The
Apply complete!shown underneath is not reachable from thethree lines above it. Meanwhile
examples/stacks/scaleway/feint.yamlexists andfeint upconsumes it directly.3. The example stack is 625 lines — two VPCs, several networks, ACLs, groups,
a bastion, web and app tiers, an LB, a gateway, IPAM, placement groups, volumes,
snapshots, an image, an IAM SSH key, cloud-init. It is an excellent
qualification stack and a poor first example, and it is currently asked to
be both.
4. The French README carries an English Quick Start. Not an oversight — the
generator injects the same English block into both, and its comment says a
command needs no translation. True for commands; the block also contains prose:
"On your machine", "In CI, or anywhere Docker runs". The technical drift was
solved at the cost of an editorial one.
What this issue asks for, and what it does not
It does not ask for more documentation. It asks for a hierarchy, and it says
so as the audit did: stop adding user documentation until the hierarchy is
clear.
No honesty is lost anywhere below — what changes is when a reader is asked to
absorb which fact.