Repository navigation
Conversation
…atch warning (D-0604)
…f ssl_dir <dir> (D-0571)
…e refused (D-0252)
…for every reader (D-0573)
…ndeclared networks and core service names in plugin fragments (D-0490)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Four small debt rows fixed, one verified as not reproducing (regression tests added).
Per row
D-0604 (fixed). The core env no-match warning is now built from
pluginServiceCandidates(pluginName, manifestName), so a plugin whoseplugin.jsonname differs from its directory is told all six candidate names. Test fails before, passes after.D-0571 (fixed).
certREinsnippet_tls.gomaps only the nested/etc/nginx/ssl/certificates/<dir>/shape. The flat/etc/nginx/ssl/<dir>/path is recorded as unmodelled (ssl_dir ""). The routemodel fixtures render${SSL_DIR}ascertificates/example-test(goldens keepssl_dir example-test). Four goldens (compliance, geocoding, idme, object-storage) change: they hand-write the flat${NSELF_DOMAIN}/${DOMAIN}path, which is now unmodelled, as the row asks. Twointernal/buildsnippet fixtures moved to the nested path.D-0573 (fixed).
config.DefaultPluginDir,config.ResolvePluginDir,config.ExpandPluginDir,config.ExpandHomeDir(internal/config/plugin_dir.go) are now the one plugin-dir rule.build.DefaultPluginDir,cmd/commands.resolvePluginDir,resolvePluginNginxDir,buildTemplateVarsand the plugin migrations dir (database.migrationsDir) all call them.~expansion stays v1.5 only (the D-0478 compat marker moved with it, wiki row path updated). v1.4 behaviour is unchanged; under v1.5 compose discovery and plugin migrations now expand a literal~like nginx injection did.nginxtopo.CertDirName/CertDirNameOrLocalhostare the one domain-to-cert-dir rule.ssl.DomainToDirName,nginx.sslDirName,routemodel(build, SetSSL, api-docs route),apidocs.NginxConfandbuild.pluginSSLDiruse it.internal/nginxno longer importsinternal/ssl, so the stalenginx -> ssledge is removed fromlayers.yamlandlayering_basis_test.go(a shrink;TestLayeringtold me to delete it).NSELF_PLUGIN_DIRthat have different semantics (license/entitlement, importer, doctor, bundle installer, compose/object_storage, exporter, deploy). They are a follow-up.D-0252 (not reproduced, tests added). Every production read hashes the bytes:
Reader.Openstreams throughverifyingReader(E516 at EOF on a length or SHA-256 mismatch) andVerifyre-hashes against the snapshot, so a same-size in-place edit with the mtime restored, or a parent directory swapped for a symlink, is never accepted. A swap also changes dev/ino, which the snapshot check refuses.reader_race_test.gopins both. The one unhashed path isReader.OpenFile, which returns a bare*os.Fileby contract and has no caller outside the package; closing that means changing its contract (a decision), so no change here.D-0490 (fixed, with one deviation).
resolvedFragment/resolvedServicenow decodeinclude,extendsandbuild;isolationViolations()(plugins_fragment_isolation.go) flags: top-levelinclude,extendsof anotherfile:(or a malformed extends),build.networkother thannone/default, a service listing a network its fragment does not declare (other than the project network,defaultor the legacy literals), and a service named like a core service (compose.CoreServices(): postgres, hasura, auth, nginx). It is wired intonormalizeComposeNetworks: E129 in v1.5, a warning in v1.4 (compat marker D-0490, wiki table regenerated). Scanned the 91docker-compose.plugin.ymlfiles in the siblingpluginsandplugins-procheckouts: zero violations.TestLockUsesRediscoveredComposeFilesused a fragment that redefinedhasura; it now usesredis.Deviation: the row prefers folding this into the ADR 0027 / E130 socket guard. That guard inspects merged compose inputs at a later phase, so I kept the rules in the existing decoded-view network checker (one place, E129) rather than splitting the refactor. Merging the two checkers is still open.
Commands run
gofmt -l internal cmdclean;go build ./...;go vet ./internal/... ./cmd/...cleango test ./internal/... ./cmd/...exit 0bash scripts/ci/compat-markers.sh --checkexit 0