A critical Java data connector ships with no provenance attestation — what are your realistic options?
answer
- you cannot make them publish
- three options, one per component
- build it yourself, or say what you know
- never dress an ingest record as build provenance
- tier by what the component can reach
basics
~20 sThree: rebuild it from source and attest your own build, accept it while attaching an honest, clearly weaker statement about what you did verify, or refuse it and contain or replace the component. Choose by what the connector can reach, and record the gap as data.
solid answer
~50 sThere are only three engineering answers, and the judgment is picking one per component rather than one for the estate. **Rebuild and self-attest**: if source is available and the build is tractable, build it yourself and issue provenance for *your* bytes — strong, but it is a claim about your build, not the vendor's, and you now own patching it. **Accept with an honest weaker claim**: ingest the vendor artifact once, pin its digest, and attach a statement that says what you actually did — who reviewed it, what evidence exists, when it entered the estate — with a predicate that is clearly not build provenance, because dressing an ingest record up as provenance is worse than having none. **Refuse or contain**: replace the component, or bound what it can reach so an unverifiable artifact cannot touch credentials or open egress. Tier the decision by reach, and make every gap queryable so "which running artifacts have no build provenance" has an answer.
go deeper
Know that plenty of vendors publish no provenance at all, and that the honest response is to record what you do know about the artifact rather than to pretend a statement exists.
Be able to lay out the three options — rebuild and attest yourself, accept with a clearly weaker ingest record, or refuse and contain — and explain why the ingest record must not be shaped like build provenance.
Show the containment instinct: bound the credentials, data and network an unverifiable component can reach, pin its digest at ingest, and make the acceptance a recorded fact rather than a silently skipped check.
Own the portfolio call. Tier suppliers by reach, decide where rebuild-and-self-attest effort goes, and be able to answer on demand which running artifacts have no build provenance and who accepted each.
## Why this is a judgment question Every enforcement programme meets this within weeks. You stand up verification, it works for everything your own builds produce, and then you hit a supplier — often a small, specialised one — whose artifact your business depends on and who publishes no build provenance and shows no sign of starting. The question is never "how do I make them publish"; as an engineering lead you cannot, and waiting is a decision with a default answer of *no control forever*. The question is which of three options you take, and how you keep the answer visible. ## Option 1 — rebuild from source and attest it yourself If source is published and the build is tractable, build the component on your own hardened build system and issue provenance for the artifact you produced. This is the strongest outcome available: you get a real statement, generated by something that observed the build, and it slots into your existing verification unchanged. Be honest about what you bought. The claim is about **your** bytes, not the vendor's — you have not verified the vendor's release, you have replaced it. And you have taken on real cost: tracking upstream releases, reproducing their build environment, patching on their cadence, and owning the support conversation when behaviour differs from the shipped artifact. For a component with wide reach and a stable, buildable source tree, that trade is usually worth it. For a large opaque product it is not on the table. ## Option 2 — accept, with an honest and clearly weaker claim Most of the estate lands here. You ingest the vendor artifact once, deliberately: record the exact digest you received, who approved it, what evidence you gathered, and when. You attach a statement of your own that says **exactly that** — an ingest or review record — and you keep it in a predicate that no verifier will confuse with build provenance. That last constraint is the whole discipline. The tempting shortcut is to have an internal service emit build-provenance-shaped statements for vendor artifacts so the gate goes green and the dashboard shows full coverage. That is the worst available outcome: it launders an unverified artifact into a verified-looking one, destroys the meaning of every genuine statement in the estate, and the person who later reads that statement has no way to tell hearsay from observation. Say what you know. "We received these exact bytes on this date, this person approved them, this evidence exists" is a real, useful, weaker claim — and downstream policy can treat it as weaker precisely because it is labelled honestly. ## Option 3 — refuse, replace, or contain Refusal is a legitimate answer when a component's reach is large enough. So is the middle path that gets used more often: accept the artifact, but bound what an unverifiable component can do. A data connector is a useful case because its reach is the whole point of it — it holds database credentials, it reaches inside the estate, it opens network paths. If you cannot verify how it was built, you can still ensure it runs with narrowly scoped credentials, restricted egress, and no ambient access to anything it does not need, so that the blast radius of a compromised upstream build is a bounded set of data rather than the estate. ## Tier by reach, not by supplier size Across hundreds of suppliers, a uniform bar is either so low it means nothing or so high it stalls the business. The variable worth tiering on is **what the component can reach**: credentials it holds, data it can read, network it can open, whether it runs in the build system itself. A build-time plugin with an unverifiable origin is a far sharper problem than a leaf library in a reporting service, regardless of vendor size. Spend rebuild-and-self-attest effort at the top tier; use ingest records and containment below it. ## Make the gap data, not vibes Whatever you choose, the decision must exist as a machine-readable fact attached to the artifact, so the gate's answer for it is explicit rather than a hole. The test of the programme is whether you can answer, on demand and without a survey: which artifacts currently running have no build provenance, who accepted each, on what evidence, and what each can reach. An organisation that can answer that has managed the risk. One that cannot has an enforcement gate with a quietly widening set of things it does not look at. ## Answers that signal weakness "We would require it in the contract and wait" is not an engineering answer to a running system. "We would generate the attestation for them" is the laundering failure. "We would block it" with no consideration of what the component does is refusing to make a trade-off, which is the skill the question is testing.
- Why not have an internal service emit provenance-shaped statements for vendor artifacts so coverage looks complete?Because it launders an unverified artifact into a verified-looking one. The signer never observed the build, so the statement is hearsay wearing the same shape as genuine provenance, and no downstream reader can separate the two. It devalues every honest statement in the estate at once, and coverage numbers become actively misleading.
- What does rebuilding from source and attesting it yourself actually buy, and what does it cost?It buys a genuine statement from a builder you control, which passes your existing verification unchanged. It costs ownership: tracking upstream releases, reproducing their build, patching on your own cadence, and explaining behaviour differences from the shipped artifact. And it is a claim about your bytes — you replaced the vendor's release rather than verifying it.
- How would you decide which unattested suppliers deserve the expensive treatment?Tier by reach, not by vendor size or spend: what credentials the component holds, what data it can read, what network it can open, and whether it executes inside your build system. A build-time component with unverifiable origin outranks a leaf library in a reporting service. Spend rebuild effort at the top tier, containment and ingest records below.
- What single question should your programme be able to answer about these gaps?Which artifacts running today have no build provenance — plus who accepted each one, on what evidence, and what each can reach. If that requires a survey rather than a query, the gaps are not managed, and the enforcement gate has an invisible and growing set of exemptions.
saying these in an interview costs you the question
- Says wait for the vendor to start publishing
- Generates build-provenance-shaped statements for artifacts nobody built
- Applies one uniform bar to every supplier regardless of reach
- Blocks without considering what the component does
- Treats an ingest record as equivalent to build provenance