Directories
¶
| Path | Synopsis |
|---|---|
|
Package actionscan answers one question for both embed gates: does a component's ClientJS call G.serverAction?
|
Package actionscan answers one question for both embed gates: does a component's ClientJS call G.serverAction? |
|
analyzers
|
|
|
allow
Package allow is the one marked-exception mechanism for the repo analyzers: a diagnostic whose line (or the line right below a stand-alone marker line) carries
|
Package allow is the one marked-exception mechanism for the repo analyzers: a diagnostic whose line (or the line right below a stand-alone marker line) carries |
|
asciifold
Package asciifold catches registry lookups that fold Unicode case.
|
Package asciifold catches registry lookups that fold Unicode case. |
|
authpresence
Package authpresence catches an Authorization header's presence used as a scheme test, and a cookie-name fallback list that reads the unprefixed name before its __Host- / __Secure- twin.
|
Package authpresence catches an Authorization header's presence used as a scheme test, and a cookie-name fallback list that reads the unprefixed name before its __Host- / __Secure- twin. |
|
bareduration
Package bareduration catches a bare integer handed to a time.Duration: `Every(5)` is five nanoseconds, not five seconds.
|
Package bareduration catches a bare integer handed to a time.Duration: `Every(5)` is five nanoseconds, not five seconds. |
|
callbackunderlock
Package callbackunderlock catches calls through func-typed values while a sync mutex is held.
|
Package callbackunderlock catches calls through func-typed values while a sync mutex is held. |
|
compositekey
The join is recognized through the indirections a real bug wears: a local or struct field bound from it, a one-result helper whose body reduces to returning it (statements that only rebind the helper's parameters in front of the return do not hide it), and the one-arg string-preserving normalizers around it at the sink (strings.ToLower/ToUpper/TrimSpace — the usual key normalizers).
|
The join is recognized through the indirections a real bug wears: a local or struct field bound from it, a one-result helper whose body reduces to returning it (statements that only rebind the helper's parameters in front of the return do not hide it), and the one-arg string-preserving normalizers around it at the sink (strings.ToLower/ToUpper/TrimSpace — the usual key normalizers). |
|
controlbytes
Package controlbytes catches request-derived strings reaching a log, span-attribute, or header sink without a control-byte scrub.
|
Package controlbytes catches request-derived strings reaching a log, span-attribute, or header sink without a control-byte scrub. |
|
credfetch
Package credfetch catches an http.Client with no CheckRedirect used for a credential-bearing fetch.
|
Package credfetch catches an http.Client with no CheckRedirect used for a credential-bearing fetch. |
|
deferreset
Package deferreset catches state set before a call that can panic and reset after it outside a defer: a panic skips the reset, and the state stays set for every later caller.
|
Package deferreset catches state set before a call that can panic and reset after it outside a defer: a panic skips the reset, and the state stays set for every later caller. |
|
discardeddecode
Package discardeddecode catches a request-shaped parse whose error is thrown away: `_ = json.NewDecoder(r.Body).Decode(&body)`, `_ = json.Unmarshal(b, &v)`, `_ = r.ParseForm()`, and the bare statement spelling that drops the result on the floor.
|
Package discardeddecode catches a request-shaped parse whose error is thrown away: `_ = json.NewDecoder(r.Body).Decode(&body)`, `_ = json.Unmarshal(b, &v)`, `_ = r.ParseForm()`, and the bare statement spelling that drops the result on the floor. |
|
discardederr
Package discardederr catches a multi-value assignment that drops an error on the floor while keeping the values around it: `ch, cancel, _ := m.subscribeImpl(id)`.
|
Package discardederr catches a multi-value assignment that drops an error on the floor while keeping the values around it: `ch, cancel, _ := m.subscribeImpl(id)`. |
|
discardmutator
Package discardmutator catches security-state mutations whose result is discarded right where the handler acknowledges success.
|
Package discardmutator catches security-state mutations whose result is discarded right where the handler acknowledges success. |
|
divlimit
Package divlimit catches integer division and remainder by a caller-supplied pagination-sized value that the function never guards against 0 or 1.
|
Package divlimit catches integer division and remainder by a caller-supplied pagination-sized value that the function never guards against 0 or 1. |
|
doublewrite
Package doublewrite catches a deferred response write that also runs after the function already answered on another path.
|
Package doublewrite catches a deferred response write that also runs after the function already answered on another path. |
|
embedskip
Package embedskip catches a struct field walk that maps fields to keys by their tags and never looks at an embedded struct.
|
Package embedskip catches a struct field walk that maps fields to keys by their tags and never looks at an embedded struct. |
|
emitident
Package emitident catches names formatted into emitted code without an identifier gate.
|
Package emitident catches names formatted into emitted code without an identifier gate. |
|
errleak
Package errleak catches an internal error string being handed to the client on a 5xx response — or, since the 2026-09-07 round, into a JSON-RPC internal-error response.
|
Package errleak catches an internal error string being handed to the client on a 5xx response — or, since the 2026-09-07 round, into a JSON-RPC internal-error response. |
|
fanoutreq
Package fanoutreq catches one backend call per element of a collection whose length the request chooses.
|
Package fanoutreq catches one backend call per element of a collection whose length the request chooses. |
|
fieldtypeswitch
Package fieldtypeswitch makes adding a schema field type a checklist instead of a silent hazard.
|
Package fieldtypeswitch makes adding a schema field type a checklist instead of a silent hazard. |
|
fixedtmp
Package fixedtmp catches a path under the shared temp root whose name is CONSTANT or pid-predictable reaching a create/mkdir/exec or build sink: os.Mkdir / os.MkdirAll / os.Create / os.WriteFile / os.OpenFile(write flags) on it, an exec.Command / exec.CommandContext argument (`go build -o <path>` writes through whatever is at the path; argv[0] runs it), or an exec.Cmd Dir assignment (the child's cwd).
|
Package fixedtmp catches a path under the shared temp root whose name is CONSTANT or pid-predictable reaching a create/mkdir/exec or build sink: os.Mkdir / os.MkdirAll / os.Create / os.WriteFile / os.OpenFile(write flags) on it, an exec.Command / exec.CommandContext argument (`go build -o <path>` writes through whatever is at the path; argv[0] runs it), or an exec.Cmd Dir assignment (the child's cwd). |
|
floatnum
Package floatnum catches JSON decoded into a target that holds an interface value (any, map[string]any, []any, or a struct field of one) without UseNumber.
|
Package floatnum catches JSON decoded into a target that holds an interface value (any, map[string]any, []any, or a struct field of one) without UseNumber. |
|
fmtformat
Package fmtformat catches URL-encoder output (url.Values.Encode, url.QueryEscape, url.PathEscape) becoming part of a fmt format string.
|
Package fmtformat catches URL-encoder output (url.Values.Encode, url.QueryEscape, url.PathEscape) becoming part of a fmt format string. |
|
growmap
Package growmap catches a per-caller map on a long-lived struct that a request grows and nothing bounds: no size cap and no time-driven sweep.
|
Package growmap catches a per-caller map on a long-lived struct that a request grows and nothing bounds: no size cap and no time-driven sweep. |
|
hookedread
Package hookedread keeps the entity screens on the hooked read.
|
Package hookedread keeps the entity screens on the hooked read. |
|
hygiene
Package hygiene holds the small checks whose whole point is that they currently find nothing.
|
Package hygiene holds the small checks whose whole point is that they currently find nothing. |
|
internal/astx
Package astx holds the small go/analysis helpers that kept being copied verbatim between the repo analyzers under internal/analyzers.
|
Package astx holds the small go/analysis helpers that kept being copied verbatim between the repo analyzers under internal/analyzers. |
|
internal/dominance
Package dominance provides the statement-dominance walk shared by the analyzers under internal/analyzers: which statements and conditions of a function body are guaranteed to execute before a given node.
|
Package dominance provides the statement-dominance walk shared by the analyzers under internal/analyzers: which statements and conditions of a function body are guaranteed to execute before a given node. |
|
internal/pathflow
Package pathflow holds the path-dataflow machinery the root-shaped analyzers (rootwrite, rootread) share: local-binding resolution, the root/base/dir-named root tests, the lexical Join/concat containment shapes — including the one-hop same-package helper that RETURNS a root-joined path — and the EvalSymlinks-on-the-chain judgement that separates the fix posture from a resolution on an unrelated path, plus the verified symlink guards (SymlinkGuards, GuardsPath): a function counts as a guard by what its body does, never by its name, and a guard call gates only the path it was handed.
|
Package pathflow holds the path-dataflow machinery the root-shaped analyzers (rootwrite, rootread) share: local-binding resolution, the root/base/dir-named root tests, the lexical Join/concat containment shapes — including the one-hop same-package helper that RETURNS a root-joined path — and the EvalSymlinks-on-the-chain judgement that separates the fix posture from a resolution on an unrelated path, plus the verified symlink guards (SymlinkGuards, GuardsPath): a function counts as a guard by what its body does, never by its name, and a guard call gates only the path it was handed. |
|
internal/readsrc
Package readsrc finds the reader a whole-body read consumes.
|
Package readsrc finds the reader a whole-body read consumes. |
|
internal/rwcall
Package rwcall answers one question for the response-lifecycle analyzers (recoverwrite, doublewrite): does this call write an HTTP response, and to which writer? It decides nothing about when a write is wrong; the analyzers pick that.
|
Package rwcall answers one question for the response-lifecycle analyzers (recoverwrite, doublewrite): does this call write an HTTP response, and to which writer? It decides nothing about when a write is wrong; the analyzers pick that. |
|
intwrap
Package intwrap catches the two integer-wrap postures that slip past range checks: unsigned→signed conversion without a bound, and unary negation of MinInt inside an abs.
|
Package intwrap catches the two integer-wrap postures that slip past range checks: unsigned→signed conversion without a bound, and unary negation of MinInt inside an abs. |
|
iounderlock
Package iounderlock catches database and network I/O made while a sync mutex is held.
|
Package iounderlock catches database and network I/O made while a sync mutex is held. |
|
keytrim
Package keytrim catches strings.TrimSpace rewriting an identity value that is then used as a key.
|
Package keytrim catches strings.TrimSpace rewriting an identity value that is then used as a key. |
|
laxcoerce
Package laxcoerce catches a wrong type masquerading as absence: a comma-ok type assertion on a map[string]any entry whose failure path returns zero values with a nil error — or continues, or breaks/gotos out of the loop with the nil error intact (2026-11-03 round) — as though the key had never been sent.
|
Package laxcoerce catches a wrong type masquerading as absence: a comma-ok type assertion on a map[string]any entry whose failure path returns zero values with a nil error — or continues, or breaks/gotos out of the loop with the nil error intact (2026-11-03 round) — as though the key had never been sent. |
|
laxenvelope
Package laxenvelope catches a transport that decodes the SAME envelope type lax at one site while the same package — or, since the 2026-09-07 round, ANY package — decodes that type strictly at another.
|
Package laxenvelope catches a transport that decodes the SAME envelope type lax at one site while the same package — or, since the 2026-09-07 round, ANY package — decodes that type strictly at another. |
|
layoutfunc
Package layoutfunc flags route-state reads that are lexically inside a layout build (an app.LayoutFunc body) and outside a RouteArea closure (docs/DESIGN-layout-outlets.md, "The lint").
|
Package layoutfunc flags route-state reads that are lexically inside a layout build (an app.LayoutFunc body) and outside a RouteArea closure (docs/DESIGN-layout-outlets.md, "The lint"). |
|
listheader
Package listheader catches a list-valued HTTP header read with Header.Get and then split or token-compared.
|
Package listheader catches a list-valued HTTP header read with Header.Get and then split or token-compared. |
|
mapwriter
Package mapwriter catches nondeterministic SSR output at its source: ranging over a Go map while writing into an output builder emits attributes/markup in a different order every render.
|
Package mapwriter catches nondeterministic SSR output at its source: ranging over a Go map while writing into an output builder emits attributes/markup in a different order every render. |
|
multipartparse
Package multipartparse catches a handler that accepts a multipart/form-data body and then parses it with ParseForm alone.
|
Package multipartparse catches a handler that accepts a multipart/form-data body and then parses it with ParseForm alone. |
|
names
Package names is the dependency-free list of repo analyzer names: the vocabulary of the //gofastr:allow(<name>) marker.
|
Package names is the dependency-free list of repo analyzer names: the vocabulary of the //gofastr:allow(<name>) marker. |
|
negdur
Package negdur catches time.Duration zero-tests that silently fold a NEGATIVE lifetime onto the "zero means default" or "nonzero means expiry" arm.
|
Package negdur catches time.Duration zero-tests that silently fold a NEGATIVE lifetime onto the "zero means default" or "nonzero means expiry" arm. |
|
nonfinite
Package nonfinite catches a strconv.ParseFloat result stored or returned without a NaN/Inf gate.
|
Package nonfinite catches a strconv.ParseFloat result stored or returned without a NaN/Inf gate. |
|
nostore
Package nostore catches a per-caller 2xx response written with no Cache-Control on its path.
|
Package nostore catches a per-caller 2xx response written with no Cache-Control on its path. |
|
nowaitdelay
Package nowaitdelay catches an exec.CommandContext child with captured stdout started with no WaitDelay bound.
|
Package nowaitdelay catches an exec.CommandContext child with captured stdout started with no WaitDelay bound. |
|
nullarray
Package nullarray catches a nil slice reaching a JSON field the wire schema requires to be an array, where it encodes as null.
|
Package nullarray catches a nil slice reaching a JSON field the wire schema requires to be an array, where it encodes as null. |
|
optzero
Package optzero catches a numeric option that lets 0 (or a negative) replace a nonzero default nobody downstream re-checks.
|
Package optzero catches a numeric option that lets 0 (or a negative) replace a nonzero default nobody downstream re-checks. |
|
poisonedconn
Package poisonedconn catches a session reset on a pinned *sql.Conn whose failure sends the connection back to the pool still holding the session state it was meant to clear.
|
Package poisonedconn catches a session reset on a pinned *sql.Conn whose failure sends the connection back to the pool still holding the session state it was meant to clear. |
|
quoteident
Package quoteident keeps SQL identifier quoting to one spelling: query.QuoteFolded.
|
Package quoteident keeps SQL identifier quoting to one spelling: query.QuoteFolded. |
|
ratelimitkey
Package ratelimitkey catches a per-IP rate limit keyed on a client's full address.
|
Package ratelimitkey catches a per-IP rate limit keyed on a client's full address. |
|
rawtext
Package rawtext keeps every message the framework answers a request with inside the i18n catalog.
|
Package rawtext keeps every message the framework answers a request with inside the i18n catalog. |
|
recovercallback
Package recovercallback catches registry callbacks invoked with no recover in scope on a dispatch path that has no net.
|
Package recovercallback catches registry callbacks invoked with no recover in scope on a dispatch path that has no net. |
|
recoverlog
Package recoverlog catches a recover() value reaching a log sink without a scrub.
|
Package recoverlog catches a recover() value reaching a log sink without a scrub. |
|
recoverwrite
Package recoverwrite catches a deferred recover that answers a panic by writing a response without first asking whether the response had already started.
|
Package recoverwrite catches a deferred recover that answers a panic by writing a response without first asking whether the response had already started. |
|
reflectset
Package reflectset catches reflect.Value mutation of a struct field that never passed through CanSet: Set, SetString, SetInt, and the rest of the Set* family panic on values obtained from an unexported field, and the panic fires at injection time, not at declaration time, so a single lowercased tagged field takes down every request.
|
Package reflectset catches reflect.Value mutation of a struct field that never passed through CanSet: Set, SetString, SetInt, and the rest of the Set* family panic on values obtained from an unexported field, and the panic fires at injection time, not at declaration time, so a single lowercased tagged field takes down every request. |
|
reqparamlimit
Package reqparamlimit catches unclamped request-sourced integers flowing into limit/cap-shaped call parameters.
|
Package reqparamlimit catches unclamped request-sourced integers flowing into limit/cap-shaped call parameters. |
|
resolvedial
Package resolvedial catches an SSRF guard that resolves a host name, checks the answer, and then lets the transport resolve the same name again to dial it.
|
Package resolvedial catches an SSRF guard that resolves a host name, checks the answer, and then lets the transport resolve the same name again to dial it. |
|
rootread
Package rootread catches reads whose containment under a root is resolved lexically only — the read twin of rootwrite.
|
Package rootread catches reads whose containment under a root is resolved lexically only — the read twin of rootwrite. |
|
rootwrite
Package rootwrite catches writes whose containment under a root is resolved lexically only: os.WriteFile / os.Create / os.CreateTemp / os.OpenFile(write flag) / os.Mkdir / os.MkdirAll / os.Remove on a path built under a root — filepath.Join, or a flat `root + "/" + x` concatenation — where the root is a caller-supplied parameter or field — with no filepath.EvalSymlinks on that path's chain — plus the archive twin: zip.Writer entry names assembled from a parameter with no path.Clean on the entry-name chain.
|
Package rootwrite catches writes whose containment under a root is resolved lexically only: os.WriteFile / os.Create / os.CreateTemp / os.OpenFile(write flag) / os.Mkdir / os.MkdirAll / os.Remove on a path built under a root — filepath.Join, or a flat `root + "/" + x` concatenation — where the root is a caller-supplied parameter or field — with no filepath.EvalSymlinks on that path's chain — plus the archive twin: zip.Writer entry names assembled from a parameter with no path.Clean on the entry-name chain. |
|
rsakeysize
Package rsakeysize catches an RSA public key built from a decoded modulus that nothing bounds from above.
|
Package rsakeysize catches an RSA public key built from a decoded modulus that nothing bounds from above. |
|
sanitizefix
Package sanitizefix catches a scrub that removes a multi-character match in one pass: the removal splices the match's neighbours together, and they can spell the very thing it removed.
|
Package sanitizefix catches a scrub that removes a multi-character match in one pass: the removal splices the match's neighbours together, and they can spell the very thing it removed. |
|
secretcompare
Package secretcompare catches a client-supplied credential compared with == or != instead of a constant-time primitive.
|
Package secretcompare catches a client-supplied credential compared with == or != instead of a constant-time primitive. |
|
settlectx
Package settlectx catches an outcome write (ack, nack, settle, record, mark) made on the same cancellable context the unit of work it records just ran under.
|
Package settlectx catches an outcome write (ack, nack, settle, record, mark) made on the same cancellable context the unit of work it records just ran under. |
|
siblingresult
Package siblingresult catches a call site that blanks a result its function marks must-use: the flag one path dropped is the flag the other paths exist to honour.
|
Package siblingresult catches a call site that blanks a result its function marks must-use: the flag one path dropped is the flag the other paths exist to honour. |
|
silentskip
Package silentskip catches a loop that backs off and retries past an error without a word: `if err != nil { wait(); continue }` whose block never reads err.
|
Package silentskip catches a loop that backs off and retries past an error without a word: `if err != nil { wait(); continue }` whose block never reads err. |
|
statusrange
Package statusrange catches a response status that reaches WriteHeader (or http.Error's code argument) without a range check.
|
Package statusrange catches a response status that reaches WriteHeader (or http.Error's code argument) without a range check. |
|
suite
Package suite is the set of go/analysis analyzers GoFastr runs under `go vet -vettool`.
|
Package suite is the set of go/analysis analyzers GoFastr runs under `go vet -vettool`. |
|
testgap
Package testgap reports validator enumeration arms that no fixture in the package ever exercises.
|
Package testgap reports validator enumeration arms that no fixture in the package ever exercises. |
|
textbind
Package textbind catches request text bound into a SQL text parameter with no check that Postgres can store it.
|
Package textbind catches request text bound into a SQL text parameter with no check that Postgres can store it. |
|
tightenshared
Package tightenshared catches owner-only tightening of a directory the caller named, applied whether or not this code created it.
|
Package tightenshared catches owner-only tightening of a directory the caller named, applied whether or not this code created it. |
|
timestampid
Package timestampid catches an identifier minted from wall-clock time: a time.Now().Unix()/.UnixMilli()/.UnixNano() value formatted into a string (fmt.Sprintf, strconv.FormatInt/FormatUint/Itoa, or + concatenation) and bound to a name ending in id, token, session, a credential-qualified key (apiKey, signingKey), nonce, secret, or capability.
|
Package timestampid catches an identifier minted from wall-clock time: a time.Now().Unix()/.UnixMilli()/.UnixNano() value formatted into a string (fmt.Sprintf, strconv.FormatInt/FormatUint/Itoa, or + concatenation) and bound to a name ending in id, token, session, a credential-qualified key (apiKey, signingKey), nonce, secret, or capability. |
|
unboundedbody
Package unboundedbody catches an inbound HTTP request body that is read or decoded without a size cap, so a single request can spend the server's memory.
|
Package unboundedbody catches an inbound HTTP request body that is read or decoded without a size cap, so a single request can spend the server's memory. |
|
unboundedresp
Package unboundedresp catches the unbounded read of an HTTP RESPONSE body: io.ReadAll(resp.Body), or a json/xml/yaml Decoder seated on it, with no io.LimitReader or http.MaxBytesReader anywhere on that body's chain in the function — or one hop away in a same-package helper the body is passed to.
|
Package unboundedresp catches the unbounded read of an HTTP RESPONSE body: io.ReadAll(resp.Body), or a json/xml/yaml Decoder seated on it, with no io.LimitReader or http.MaxBytesReader anywhere on that body's chain in the function — or one hop away in a same-package helper the body is passed to. |
|
unseated
Package unseated catches a long-lived stream surface that admits a connection without any seat acquisition reachable on its open path.
|
Package unseated catches a long-lived stream surface that admits a connection without any seat acquisition reachable on its open path. |
|
worldreadable
Package worldreadable catches files and directories written for state or secrets with group/other permission bits: os.WriteFile / os.Create / os.OpenFile(write flags) / os.Mkdir / os.MkdirAll whose mode is a CONSTANT literal carrying group or other bits (0644, 0755, 0666, 0777; os.Create is umask-default 0666), while this repo's own discipline for that artifact class is owner-only (0600/0700 plus fileperm.Restrict, pinned by battery/log, upload storage, the session sqlite store and DEK, freeze's world.json, and the credstore).
|
Package worldreadable catches files and directories written for state or secrets with group/other permission bits: os.WriteFile / os.Create / os.OpenFile(write flags) / os.Mkdir / os.MkdirAll whose mode is a CONSTANT literal carrying group or other bits (0644, 0755, 0666, 0777; os.Create is umask-default 0666), while this repo's own discipline for that artifact class is owner-only (0600/0700 plus fileperm.Restrict, pinned by battery/log, upload storage, the session sqlite store and DEK, freeze's world.json, and the credstore). |
|
wrapwriter
Package wrapwriter catches http.ResponseWriter wrappers that hide the connection from http.ResponseController, and middleware that changes response headers after the handler has already sent them.
|
Package wrapwriter catches http.ResponseWriter wrappers that hide the connection from http.ResponseController, and middleware that changes response headers after the handler has already sent them. |
|
Package asciicase folds case A–Z only: the folding Postgres applies to an unquoted identifier, CSS to a keyword or unit, and the repo to a name, table, file extension or key it compares case-insensitively.
|
Package asciicase folds case A–Z only: the folding Postgres applies to an unquoted identifier, CSS to a keyword or unit, and the repo to a name, table, file extension or key it compares case-insensitively. |
|
Package astbase holds the one go/ast helper that two trees with different dependency budgets both need: framework/contracts, which must build without golang.org/x/tools, and internal/analyzers' astx, which sits on golang.org/x/tools/go/analysis.
|
Package astbase holds the one go/ast helper that two trees with different dependency budgets both need: framework/contracts, which must build without golang.org/x/tools, and internal/analyzers' astx, which sits on golang.org/x/tools/go/analysis. |
|
Package atomicfile supports replacement of complete files on disk.
|
Package atomicfile supports replacement of complete files on disk. |
|
Package attrscan finds data-cui-* attribute values in rendered HTML with a byte scan instead of a regexp.
|
Package attrscan finds data-cui-* attribute values in rendered HTML with a byte scan instead of a regexp. |
|
Package bom drops the UTF-8 byte order mark from the start of a text file the developer wrote.
|
Package bom drops the UTF-8 byte order mark from the start of a text file the developer wrote. |
|
Package browserpath resolves the Chrome/Chromium/Edge executable that chromedp should launch.
|
Package browserpath resolves the Chrome/Chromium/Edge executable that chromedp should launch. |
|
Package buildoutput identifies generated framework output directories.
|
Package buildoutput identifies generated framework output directories. |
|
Package chromedptest boots the headless Chrome used by the repo's chromedp-driven tests.
|
Package chromedptest boots the headless Chrome used by the repo's chromedp-driven tests. |
|
Package clientip reads the client address out of X-Forwarded-For the one way that survives an appending proxy: from the right.
|
Package clientip reads the client address out of X-Forwarded-For the one way that survives an appending proxy: from the right. |
|
Package deepcopy rebuilds every map and slice reachable from a value, so a holder of the copy cannot write into the original's containers.
|
Package deepcopy rebuilds every map and slice reachable from a value, so a holder of the copy cannot write into the original's containers. |
|
Package dsnredact strips credentials from database DSNs so the remainder can be logged or committed (host/db name are configuration, not secrets).
|
Package dsnredact strips credentials from database DSNs so the remainder can be logged or committed (host/db name are configuration, not secrets). |
|
Package filelock takes an exclusive OS lock on an open file, blocking (Lock) or not (TryLock): flock on Unix, LockFileEx on Windows.
|
Package filelock takes an exclusive OS lock on an open file, blocking (Lock) or not (TryLock): flock on Unix, LockFileEx on Windows. |
|
filepermtest
Package filepermtest checks file permissions using the host's permission model.
|
Package filepermtest checks file permissions using the host's permission model. |
|
Package gatepath decides whether a request path sits under one of the path prefixes a loopback host's session gate lets through (battery/service and battery/desktop Config.OpenPrefixes).
|
Package gatepath decides whether a request path sits under one of the path prefixes a loopback host's session gate lets through (battery/service and battery/desktop Config.OpenPrefixes). |
|
Package hookenv holds the shell the git hooks source to set up their environment (strip-git-path.sh), so its tests sit beside it and a change to it selects them.
|
Package hookenv holds the shell the git hooks source to set up their environment (strip-git-path.sh), so its tests sit beside it and a change to it selects them. |
|
Package inflect holds the repo's one English singularizer for entity display names, shared by the app generator and the admin battery.
|
Package inflect holds the repo's one English singularizer for entity display names, shared by the app generator and the admin battery. |
|
Package jsonexact decodes JSON into a Go value without rounding the numbers an interface value holds.
|
Package jsonexact decodes JSON into a Go value without rounding the numbers an interface value holds. |
|
Package pgtest provides a shared real-Postgres test harness usable from any package in the module (core/migrate, cmd/gofastr, …) without importing framework/internal/testdb, which is import-restricted to the framework tree.
|
Package pgtest provides a shared real-Postgres test harness usable from any package in the module (core/migrate, cmd/gofastr, …) without importing framework/internal/testdb, which is import-restricted to the framework tree. |
|
Package procalive answers whether a process id names a running process, for code that keeps a pid in a file and has to tell a live owner from a stale record: battery/service waiting for its daemon to exit, framework/localrun pruning records a crashed run left behind.
|
Package procalive answers whether a process id names a running process, for code that keeps a pid in a file and has to tell a live owner from a stale record: battery/service waiting for its daemon to exit, framework/localrun pruning records a crashed run left behind. |
|
Package renderdiag connects recovered component panics to request-local test reporters.
|
Package renderdiag connects recovered component panics to request-local test reporters. |
|
Package retired reports retired class names and kit data-* attributes in rendered HTML.
|
Package retired reports retired class names and kit data-* attributes in rendered HTML. |
|
internal/tablegen
command
Command tablegen writes internal/retired's retired-name table (retired_table.gen.go) from internal/upgrade's migration registry: every class (strings.classes, css.classes) and attribute (strings.attrs) a breaking note names, kept by names.Keep — the kit's namespaces only, first note wins.
|
Command tablegen writes internal/retired's retired-name table (retired_table.gen.go) from internal/upgrade's migration registry: every class (strings.classes, css.classes) and attribute (strings.attrs) a breaking note names, kept by names.Keep — the kit's namespaces only, first note wins. |
|
names
Package names holds the retired-name data model and the rule for which names the runtime check keeps.
|
Package names holds the retired-name data model and the rule for which names the runtime check keeps. |
|
Package rootfs provides kernel-contained reads without idle directory handles.
|
Package rootfs provides kernel-contained reads without idle directory handles. |
|
Package scratchdir owns where the app spec gate tests generate their scratch packages, and checks the naming contract that keeps those packages invisible to `go list ./...` and `go build ./...` while they exist.
|
Package scratchdir owns where the app spec gate tests generate their scratch packages, and checks the naming contract that keeps those packages invisible to `go list ./...` and `go build ./...` while they exist. |
|
Package semver holds the release-version rules the gofastr CLI and the migration registry share: which spellings are a release version, and how two of them order.
|
Package semver holds the release-version rules the gofastr CLI and the migration registry share: which spellings are a release version, and how two of them order. |
|
Package sqlredact turns a SQL statement into its shape: every string and number literal replaced by ?, comments dropped, whitespace collapsed, control bytes escaped.
|
Package sqlredact turns a SQL statement into its shape: every string and number literal replaced by ?, comments dropped, whitespace collapsed, control bytes escaped. |
|
Package testinputs puts a subprocess's source files into the calling test's Go test cache key.
|
Package testinputs puts a subprocess's source files into the calling test's Go test cache key. |
|
Package teststorage owns temporary local storage handles for test fixtures.
|
Package teststorage owns temporary local storage handles for test fixtures. |
|
Package upgrade holds the migration registry `gofastr upgrade` reads: one entry per release that carries migration-relevant changes, each note with the guidance an app needs and a Find describing exactly which code the change affects.
|
Package upgrade holds the migration registry `gofastr upgrade` reads: one entry per release that carries migration-relevant changes, each note with the guidance an app needs and a Find describing exactly which code the change affects. |
|
examplescan
Package examplescan holds the check that the repo's migrated examples tree stays silent under the v0.86.0 and v0.87.0 release notes.
|
Package examplescan holds the check that the repo's migrated examples tree stays silent under the v0.86.0 and v0.87.0 release notes. |
|
releasetest
Package releasetest drives the shipped release notes (internal/upgrade/releases/*.yml) through the real scan engine: each note's affected spelling is a hit, its migrated spelling is not, and its Go-API matchers resolve against a stub kit at the real import paths.
|
Package releasetest drives the shipped release notes (internal/upgrade/releases/*.yml) through the real scan engine: each note's affected spelling is a hit, its migrated spelling is not, and its Go-API matchers resolve against a stub kit at the real import paths. |
|
releasetest/mid
Package mid drives the shipped v0.56.0–v0.85.0 release notes through the real scan engine.
|
Package mid drives the shipped v0.56.0–v0.85.0 release notes through the real scan engine. |
|
releasetest/old
Package old drives the shipped v0.3.0–v0.55.0 release notes through the real scan engine.
|
Package old drives the shipped v0.3.0–v0.55.0 release notes through the real scan engine. |
|
scan
Package scan runs the migration registry's typed matchers against an app: Go through the type checker, strings as constant values with context, CSS through the CSS tokenizer, gofastr.yml through the YAML parser, go.mod through its go directive, and a per-line regex only as the declared last resort.
|
Package scan runs the migration registry's typed matchers against an app: Go through the type checker, strings as constant values with context, CSS through the CSS tokenizer, gofastr.yml through the YAML parser, go.mod through its go directive, and a per-line regex only as the declared last resort. |
|
scantest
Package scantest builds throwaway apps for tests that drive the upgrade scanner (internal/upgrade/scan) over registry notes.
|
Package scantest builds throwaway apps for tests that drive the upgrade scanner (internal/upgrade/scan) over registry notes. |
|
Package winversion writes and reads the VERSIONINFO resource a Windows desktop build carries.
|
Package winversion writes and reads the VERSIONINFO resource a Windows desktop build carries. |
Click to show internal directories.
Click to hide internal directories.