Commits on Source 3

  • Matt Cockayne's avatar
    fix(backendconformance): an empty source after heal is a pass, not a cached failure · 8cd7cd73
    Matt Cockayne authored and Matt Cockayne's avatar Matt Cockayne committed
    connection_failure_is_not_cached treated any post-heal error as proof the
    failure had been cached. The first real adapter to use it — config-consul —
    healed to an empty prefix, whose Load correctly returns fs.ErrNotExist, and the
    suite reported 'the failure was cached' about a connection that had plainly
    just worked.
    
    fs.ErrNotExist after healing now passes. That is safe rather than lax because
    the two cases compose: connection_failure_is_an_error forbids reporting an
    unreachable connection with that sentinel, so this case can trust it to mean
    connected-but-empty. Both mutants — a backend that remembers its failure, and
    one that reports unreachable as absent — still fail.
    
    It matters because a healed fixture serving nothing is far less work than one
    seeding data, so most of the remaining adapters will heal to an empty source.
    The failure message now also names the fixture mistake it cannot distinguish
    from a real one, and a panic in the post-heal Load is caught rather than taking
    the suite down.
    8cd7cd73
  • Matt Cockayne's avatar
    docs: document the connection ladder across the Diataxis set · 1506fd40
    Matt Cockayne authored
    Thirteen how-to guides gain a 'Getting a client' section listing the rungs that
    adapter actually has, with signatures taken from go doc rather than from memory
    — the explanation page had drifted from the API in four places because it was
    written before the code.
    
    The explanation page is rewritten against the shipped surface, and gains what
    only the completed set could show:
    
      - an ambient rung supplies CREDENTIALS; the target is always explicit, with a
        table of the thirteen sentinels that enforce it
      - the Close obligation follows who built the client AND whether the SDK gives
        anything to release — gRPC clients must be closed, storage.Client need not
        be at exit, azblob.Client has no Close at all, and config-sftp closes its
        subsystem but never the caller's transport
      - the three adapters that stop short, and the different reasons they do
    
    explanation/adapters.md and explanation/dynamic-backends.md record that
    injection is now the default rather than the only option.
    
    dynamic-backends.md's Key Vault paragraph is corrected rather than quietly
    dropped. It said the release would wait on a real-vault run; it did not, and
    the suite's own comment had predicted the consequence. The claims all held when
    it finally ran — but the HARNESS failed three ways a fake could not show, which
    is the argument for real-service testing in miniature.
    
    how-to/custom-backend.md gains the obligations a self-connecting backend takes
    on, and — because this is the mistake that costs a day — how to write the heal
    fixture so it changes the world rather than the backend under test.
    
    No broken internal links; docs-claim tests and the full gate pass.
    1506fd40
  • Matt Cockayne's avatar
    chore(main): release v0.17.1 · 655680ba
    Matt Cockayne authored
    655680ba
Loading
Loading