Preflight · what the pilot is waiting on

The gated inputs

Every step that can be built as reference code without external resources is built. What remains is gated on things no amount of code produces — and this is the list, with what each one unblocks.

5Gates
22Credentials named
7Sources needing none
gii preflightEvaluated byCLI-only. This page shows what is needed; it never reports what is present.

The engineering track is complete in the sense that matters least and most: everything that could be built without the outside world is built, and nothing that needs the outside world is. Thirty fictional lineages have been through the whole pipeline, six fixture sources have been hauled into a populated registry, and the checks have been checked — all of it on data written by the author.

A gate that is waiting is not a gate that is unbuilt. Each one below names the command that proves its machinery works today, on fixtures. That distinction is the reason to run preflight before the inputs arrive rather than after: it separates "we cannot do this yet" from "we have not built this".

This page shows what is needed, never what is present. Evaluating the gates means reading the environment for credentials, and an endpoint reporting which keys are set on a server tells a caller exactly which ones exist and which are missing. So the evaluation lives in gii preflight and there is deliberately no /api/v1/preflight — the same judgment that keeps outbound fetches CLI-only. The command reports presence and never a value: no credential, no prefix, no length, no hash, because a hash is a value under another name and a length is a hint.

The gates #

Runbook step 1

Connector credentials

Needs: The API keys and tokens named by the connector specs, provisioned into the deployment environment or a secrets manager — never into the repository.

Unblocks: Step 2's live connector shakedown: `gii probe` to confirm each key works without writing anything, then `gii ingest` over the real transport, landing raw pages in the append-only evidence store.

Machinery proven today by gii probe <source>

Runbook step 1

PEPI premium key

Needs: PEPI_API_KEY, the upstream first-party evidence source's credential.

Unblocks: Pointing the adapter acceptance suite at the live client instead of fixtures. The suite itself already passes.

Machinery proven today by npm test --workspace @gii/adapters

Runbook step 3

Real 2015–2025 decisions

Needs: Decision events ingested from live sources into the registry, replacing the fictional corpus in the candidate frame.

Unblocks: Step 4's pilot selection against a real frame, and Step 5's walking skeletons on decisions that actually happened.

Machinery proven today by gii rehearse

Runbook step 6

Blinded human reviewers

Needs: Reviewers scoring real cases independently, so the inter-rater statistics describe people rather than fixtures.

Unblocks: The calibration run, and the anchor revision that follows from its findings (Work Package D).

Machinery proven today by gii calibrate

Runbook step 7

Phase-1 expert review

Needs: Subject-matter reviewers working from the methodology review packet and filing findings against the definitions and risks.

Unblocks: The Phase-1 exit condition itself. Everything downstream is provisional until it clears.

Machinery proven today by gii traceability --gaps

The credentials, by name #

22 environment-variable names are declared across the connector specs and the PEPI adapter — seven further sources need no key at all. No credential value has ever entered this repository, and the names below come from the specs themselves rather than a second list someone maintains by hand, so a new connector cannot be provisioned against a name nobody wrote down.

Provisioning

Declared credentials by auth class

The class determines how the credential travels — a query parameter, a header, or a bearer token — and therefore what has to be redacted from every surfaced line.

registration-key7
smtp4
token3
api-key2
billing-price2
premium-key1
billing-key1
billing-signing1
signing-secret1

22 credentials in total

SourceEnvironment variableAuth class
pepiPEPI_API_KEYpremium-key
congress-govCONGRESS_GOV_API_KEYregistration-key
govinfoGOVINFO_API_KEYregistration-key
regulations-govREGULATIONS_GOV_API_KEYapi-key
courtlistenerCOURTLISTENER_API_TOKENtoken
blsBLS_API_KEYregistration-key
beaBEA_API_KEYregistration-key
censusCENSUS_API_KEYregistration-key
usitc-datawebUSITC_DATAWEB_TOKENtoken
dolDOL_API_KEYregistration-key
fredFRED_API_KEYapi-key
eiaEIA_API_KEYregistration-key
hudHUD_API_TOKENtoken
billingSTRIPE_SECRET_KEYbilling-key
billingSTRIPE_WEBHOOK_SECRETbilling-signing
billingSTRIPE_PRICE_RESEARCHbilling-price
billingSTRIPE_PRICE_COMMERCIALbilling-price
billingGII_KEY_SIGNING_SECRETsigning-secret
mailSMTP_HOSTsmtp
mailSMTP_USERsmtp
mailSMTP_PASSsmtp
mailSMTP_FROMsmtp

Why the order matters #

The gates are not independent. Credentials unblock the live shakedown, which unblocks a real candidate frame, which unblocks the walking skeletons and then the calibration run. Only the Phase-1 expert review sits outside that chain — it gates the definitions rather than the data, and it can start today. The traceability matrix and the review packet exist so it can.

Provisioning every credential would still not report readiness. Human reviewers and an expert review cannot be supplied by setting a variable, and a preflight that went green on secrets alone would be lying about the thing that actually blocks the pilot. The command asserts that in a test.

The full sequence is docs/pilot-runbook.md in the repository. Run the check with gii preflight or gii preflight --json.