Platform and Distribution
Windows platform surfaces, launchers, and how fragcap ships.
Supply-chain gate
The combined offline and network-backed authority that decides whether fragcap's locked dependency graph remains eligible for release. The offline half compares complete all-feature Windows and Linux graphs plus the exact shipped Windows closure with one reviewed policy. The network half evaluates current advisories, yanks, maintenance notices, licenses, bans, and sources.
Why it matters here
A graph cannot disappear from review because its feature is optional or its target is inactive on the current host. Unknown or stale authority fails closed, and no supply-chain exception may disable the whole gate.
See also: Compatibility line, Finite dependency exception, Software bill of materials, Third-party notices, Capability feature
Compatibility line
A set of Cargo versions expected to be semver-compatible: the major number at or above 1.0, and 0.minor before 1.0. Simultaneous lines for one package represent independently maintained code lineages and require an exact finite policy record.
Why it matters here
Two patch releases inside one line remain visible but are not mislabeled as a duplicate-major problem. Adding a new major or pre-1.0 minor line fails until its owner, rationale, expiry, and removal condition are reviewed.
See also: Supply-chain gate, Finite dependency exception
Finite dependency exception
A temporary approval for one exact supply-chain rule and package version. It carries a unique identity, owner, rationale, creation date, expiry date, and observable removal condition.
Why it matters here
Wildcards, global bypasses, missing owners, expired records, and unused records fail the gate. An unavailable advisory database is infrastructure failure and cannot be excused as though it were a package finding.
See also: Supply-chain gate, Compatibility line
Software bill of materials
Also known as: SBOM
The CycloneDX 1.5 machine-readable inventory generated from the exact locked Windows release graph. It records component identities and dependency relationships and is bound to the fragcap version, source revision, target, feature set, lockfile digest, and supply-chain policy digest.
Why it matters here
Both the portable archive and MSI contain the validated SBOM. Build-only and development-only packages are not represented as distributed runtime libraries, and stale or missing components stop packaging.
See also: Supply-chain gate, Third-party notices, MSI installer
Third-party notices
The human-readable dependency identity, license expression, source, attribution, and legal text generated from the same exact release graph as the software bill of materials.
Why it matters here
This file is dependency evidence, not the project's Apache NOTICE and not release notes. It is generated and reconciled before packaging, then installed beside fragcap in both release forms.
See also: Software bill of materials, Supply-chain gate, MSI installer
npcap
A Windows packet capture driver and library, the current successor to WinPcap.
Why it matters here
npcap is not redistributable. fragcap detects it rather than shipping it,
and no distribution artifact contains it. npcap is by the Nmap Project. The
installation option that matters is WinPcap API compatible mode, which fragcap
links against; current npcap installs loopback capture support automatically,
so it is no longer a separate option to enable. The mode is verifiable from the
registry, which is how fragcap doctor names it when it is missing.
See also: Dependency model, Loopback
References:
- npcap project documentation, https://npcap.com. Installation options and license terms.
Dependency model
fragcap's external tools fall into three tiers:
- Required: npcap. The capture driver.
Without it fragcap captures nothing;
fragcap doctorfails its npcap check. - Recommended: Wireshark. The analyzer captures are opened in. Its installer
also bundles and installs npcap, so it is the simplest way to obtain both. This
tier is documentation guidance rather than a check:
doctordoes not test for Wireshark itself. - Optional: the extcap integration. It ships
with Wireshark and lets fragcap feed it live; it needs only
fragcap extcap installto register.doctorwarns when it is not registered and labels the row optional, never a blocker.
Why it matters here
This entry is the single source for the tiers. The README and the Getting
Started page summarize and link here rather than restating them. Where
fragcap doctor can enforce a tier it does (npcap as a failing check, the
extcap registration as an optional warning), so the tool and the docs do not
disagree; the recommended tier is an onboarding recommendation, not a doctor
check. npcap is by the Nmap Project, and fragcap detects it rather than
bundling it (specification section 20.2).
See also: npcap, extcap, Capability feature, Readiness check
Game profile
A JSON file describing a game's process topology, stage match rules, and
capture defaults. It is the profile variant of the
master target schema; every profile declares a
profile schema version, and a reference to one
resolves through the profile resolution order.
The format moved from TOML to JSON in the profile migration (#76).
Why it matters here
Profiles are data, not code. They carry the same license as the repository, and a contributor can add support for a title without writing Rust. Validation reports every problem in a profile rather than stopping at the first, because the population writing these files is not the population that can debug a parser.
See also: Stage, Lifecycle class, Terminal stage, Match predicate, Ambiguous image match, Profile schema version, Profile resolution order, Duration literal
VDF
Also known as: Valve key-value format
Valve's key-value text format. Steam records library locations
(libraryfolders.vdf) and per-title metadata (appmanifest_<app_id>.acf) in
it: quoted keys, quoted-or-nested-block values, line comments, and backslash
escapes.
Why it matters here
fragcap parses the subset these two manifest kinds use with a small hand-rolled parser rather than a dependency, because the format is small and stable (specification section 16.2). A malformed manifest is reported and skipped, not fatal, so one bad file does not hide every good one.
See also: Library discovery, Application-info cache
Application-info cache
Steam's local binary file (appcache/appinfo.vdf) recording, per application it
has fetched metadata for, a change-number and a launch configuration. fragcap
reads it during
launch-data accumulation as
the source of a title's launch executables. It is a distinct format from the text
VDF of libraryfolders.vdf and the .acf manifests: a length-prefixed
binary key-values format (with a string table for keys in its current version)
that a hand-rolled parser reads by hand, framing each application's section by a
size field so a malformed section is isolated and the walk resyncs.
Why it matters here
Reading it needs no Steam session and no network: it is a file Steam already wrote, so the read is passive and opens no process handle (P-1). A hand-rolled binary offset can be self-consistent with a synthetic fixture yet wrong against a real file, so the parser is validated offline and against a real cache manually, like live capture.
See also: VDF, Launch-data accumulation, Game profile
Library discovery
Reading Steam's local metadata to enumerate installed titles: fragcap locates the Steam installation through its Windows registry entry, reads the library-folders manifest to find every library, and reads every application manifest across them, yielding each installed title with its application identifier and install directory.
Why it matters here
Discovery reads local files and the registry only. It installs nothing, downloads nothing, and runs no Steam component, the same detection-not-bundling posture the project holds toward npcap.
See also: VDF, Profile scaffolding, Managed launch
Profile scaffolding
Generating a game profile skeleton from an installed title. fragcap scans the install directory for executable images, proposes launcher-suggestive images as launcher stages and the largest remaining image as the client, and emits a profile that passes section 15.4 validation unedited.
Why it matters here
The output is a heuristic starting point, marked as such in a header comment, and must be verified against an observed capture session: image names alone cannot tell a launcher from a client, and a title may run several processes sharing one image name. The scaffold never infers process ancestry from a static scan.
See also: Game profile, Stage, Ambiguous image match, Library discovery
Managed launch
Starting a stored title after fragcap is already watching and its capture handle is open, so every process in the launch chain produces a start event fragcap observes. A Steam-anchored target uses the existing protocol handler. A direct target uses one exact client path beneath its stored install root, an explicit working directory, and an argument vector without a command shell.
Why it matters here
Managed launch eliminates the acquisition race: a launcher whose whole lifetime is shorter than any poll interval is still observed, because the watcher is armed before the launch is issued. Direct launch creates the selected child but does not inspect it or retain a second process observer; ETW and the socket table remain authoritative (constitution P-1).
See also: Launcher chain, Acquisition timeout, Game profile
Capability feature
A compile-time Cargo feature that links one of fragcap's platform backends into
the binary: live (the npcap capture source), socket-table (the IP Helper
attribution backend), and etw (the process-event tracing source). fragcap doctor reports which are present, and a release binary ships with all three.
Why it matters here
Presence is a property of the built binary, not the machine around it, so
doctor reports it as a first-class fact: a binary without live cannot
capture at all, a blocking failure rather than a downstream "no interfaces"
symptom. Shipping the binary without these features once made every capture
fail while the readiness report still read "ready".
See also: npcap, Readiness check, Socket table
MSI installer
The Windows Installer package (.msi) fragcap publishes for a release. It
installs the binary per-machine under the program-files directory, adds that
directory to the system path, ships the barebones targets hint database beside
the binary as the template the first-run bootstrap seeds from, registers an
uninstall entry, best-effort excludes its install directory from Windows
Defender, and links the npcap download page on completion.
Why it matters here
The installer is a convenience over the portable archive, not a second product: it carries the same binary and the same hint database, and the release also publishes both on their own so a user can decline it. It bundles no npcap (specification section 20.2); it only links the download page. Its runtime behavior is verified by hand, like live capture, because the automated check set cannot install it.
See also: Unsigned installer, Windows Defender exclusion, npcap
Fresh-start cleanup
An explicit irreversible removal of canonical fragcap user state, separate from ordinary uninstall. Current-user cleanup is unchecked by default, limited to the exact displayed roaming and local fragcap roots, and bound to a current inventory identifier even when launched by MSI. All-users cleanup requires an elevated exact inventory preview and a matching confirmation identifier. Deep Capture recovery runs before session evidence can be deleted; active owners, redirections, changed roots, and ambiguous obligations are retained and reported.
Why it matters here
Ordinary uninstall, repair, reinstall, upgrade, and rollback never imply fresh-start consent. Custom paths, Npcap, Wireshark configuration, and independently managed extcap registration remain outside the cleanup authority.
See also: MSI installer, Package certification
Unsigned installer
A distribution installer published without an Authenticode code signature. fragcap's MSI installer is unsigned for the current release, so Windows SmartScreen shows an unrecognized-publisher warning when it runs.
Why it matters here
An unsigned installer is labeled as unsigned rather than implying a trust it cannot prove: the documentation states the SmartScreen warning is expected and that verifying the published SHA-256 checksum is the integrity check in place of a signature (P-9). Code signing is a separate, non-blocking track (issue #79).
See also: MSI installer
Windows Defender exclusion
A path added to Microsoft Defender's exclusion list so its scanning skips that location. fragcap's MSI installer best-effort adds its own install directory on install and removes it on uninstall.
Why it matters here
The exclusion is scoped to fragcap's own install directory and is an installer and operating-system configuration action, not a capture technique: it opens no process handle and touches no target process, its memory, its traffic, or the network stack, so it is outside the technique denylist (constitution P-1). It is best-effort because Windows Tamper Protection can refuse it even for an elevated installer, and a refusal must not fail the install.
See also: MSI installer, Unsigned installer
Artifact identity
The version, source revision, target, architecture, feature set, filename, content digest, checksum, signature state, and package metadata that jointly identify one final release download.
Why it matters here
S131 requires every field to agree before publication, so a correctly named package containing stale, rebuilt, wrong-feature, or wrong-target bytes cannot inherit another artifact's certification.
See also: Package certification, Release build identity
Package contract
The versioned closed declaration of official release artifacts, exact entries, size ceilings, prohibited content, PE imports, signature policy, installer ownership, lifecycle cases, and publication order.
Why it matters here
Unknown content and missing required rows fail rather than being treated as harmless packaging variation. Changes to the contract are release-policy changes and require review.
See also: Package entry, Package certification
Package entry
One canonical relative file inside a release package, identified by role, size ceiling, byte digest, ownership class, and every artifact surface on which it must appear.
Why it matters here
Paths are case-unique, non-traversing, and byte-compared across ZIP, MSI, and standalone surfaces where applicable. A permitted basename does not excuse a wrong digest or undeclared native import.
See also: Package contract, Artifact identity
Release build identity
The machine-readable compile-time record of fragcap version, source revision, target triple, architecture, exact official feature set, native backend, and official-build status.
Why it matters here
--version proves only semantic version. The fuller identity lets final-package certification reject a local rebuild, stale source, wrong target, or feature-incomplete executable without inferring from its filename.
See also: Capability feature, Artifact identity
Installer effect
One exact installer-owned file or machine-state change with declared install, repair, upgrade, and removal expectations.
Why it matters here
Ownership requires a stable product, component, path, or effect marker. A display name, filename, process identifier, or pre-existing administrator-owned Defender exclusion cannot authorize deletion.
See also: MSI installer, Windows Defender exclusion
Lifecycle case
One finite package transition with exact preconditions, installer operation, accepted exit status, state observations, deadline, cleanup result, and terminal classification.
Why it matters here
Clean install, repair, exact-byte reinstall, supported upgrade, downgrade refusal, and uninstall are required rows. A skipped, timed-out, warning-only, or unreconciled row cannot authorize a release.
See also: Installer effect, Package certification
Package certification
The blocking reconciliation of final ZIP, MSI, catalog, and checksum bytes against the package contract, including package contents, size, PE imports, build identity, unsigned state, packaged native smoke, installer lifecycle, exact cleanup, and publication ordering.
Why it matters here
Certification is attached to the bytes built once and later published. Rebuilding after the check, continuing after a failed smoke, or publishing before post-transfer revalidation would break that authority.
See also: Artifact identity, Lifecycle case, Unsigned installer