fix(docs): add a README Context section and the architecture doc - #42
Conversation
Two gaps. The README had no working guide, and there was no architecture doc at all, so the startup ordering rules and the PKI traps lived only as comments in the modules that implement them. docs/architecture.md now carries what is in the image and how each binary is verified, the entrypoint's ordered sequence, the two iptables chains and the four ordering rules that hold them together, and the three PKI invariants that are not guessable from the code's shape. All of it read out of the Dockerfile, scripts/entrypoint.py, scripts/lib/network.py and scripts/lib/pki.py this turn. docs/README.md gains the index entry, because tests/unit/test_docs_links.py fails the suite on a doc the landing page does not link. Verified: tests/unit/test_docs_links.py passes, 5 of 5. The wider unit tier is 467 passed, 3 failed, and the three are issue #38 firing on an unrelated change -- Chart.yaml is at appVersion v2.1.14 on main while VERSION says 2.1.15. Nothing here touches Chart.yaml, VERSION or CHANGELOG.md. Not verified: the integration, e2e and k8s tiers were not run.
|
Merging with That failure is issue #38 firing, not this change. On main, The live consequence is worth restating: Hand-bumping the chart has already been done once across #35, #36 and #37, and the drift came back, so a fourth hand-bump is not the fix. The two that would hold:
(1) kills it at source. Not folded into a docs PR. Also, while in here: #29 and #33 were closed today as superseded by #34, which takes openvpn-auth-oauth2 to v2.2.0 -- the current release, past the cooldown. #34 is still open and its own test job fails with logs aged out. |
|
Released in v2.1.16 — https://github.com/hyperi-io/culvert/releases/tag/v2.1.16 |
Two gaps here, and they are related. The README had nowhere to put the working guide, and there was no architecture doc at all -- so the startup ordering rules and the PKI traps existed only as comments inside the modules that implement them, which is the last place someone about to break one will look.
docs/architecture.mdis new. It covers what is in the image and how each third-party binary is verified, the entrypoint's ordered startup sequence, the two iptables chains plus the four ordering rules that hold them together, and the three PKI invariants you cannot guess from the code's shape -- whyeasyrsa init-pkiis never called, why a fetchedtls-crypt-v2key is fatal to miss rather than something to mint around, and why CRL refresh cannot be shared between the two PKI modes. Every claim came out of the Dockerfile,scripts/entrypoint.py,scripts/lib/network.pyandscripts/lib/pki.py.The README's
## Contextis its last section now, and nothing else in the file moved. The Don't/Do/Why rows are all real history, not advice: the skip-CI marker that kills a run when it appears anywhere in a commit message, hand-editing the generated chart,easyrsa init-pkiand issue #11, doc-link case againstgit ls-files, and reading a green PR as proof the image starts.docs/README.mdgains the index entry. That is not tidiness --tests/unit/test_docs_links.pyfails the suite on any doc the landing page does not link, and it also compares link case againstgit ls-files, so an unstaged new file reads as a broken link. It caught both while this was being written, which is why the bite row about it is in there.Proof
tests/unit/test_docs_links.py-- 5 passed. The wider unit tier is 467 passed, 3 failed.The three failures are not from this change. They are issue #38 doing exactly what that issue says it does -- firing on the next unrelated PR, where it looks like that PR broke something. On
mainright nowdeploy/helm/culvert/Chart.yamlcarriesappVersion: "v2.1.14"whileVERSIONsays2.1.15, because the v2.1.15 release commit stampedVERSIONand the changelog without re-rendering the chart. This branch touchesREADME.md,docs/README.mdanddocs/architecture.mdand nothing else, none of which those tests read.So
helm installfrom main is deploying the previous image. Worth deciding on its own rather than being hand-bumped inside a docs PR, since a hand-bump is what #35/#36/#37 already did once and the drift returned on the next release.NOT verified: the integration, e2e and k8s tiers were not run here. The README is also over the house length ceiling at 1755 words and 14 sections before
## Context, which predates this change and would mean splitting a public product page by reader intent.