src/bundles/duckduckgo/M1_DOGFOOD_CHECKLIST.md
lfx-duckduckgo pilot bundleStatus: :hourglass: OPEN — the runtime half of LE-1023 has not been signed off. A non-Extension-team engineer must complete the steps below and paste the filled-in checklist into the PR before merge. Until that happens, the M1 proof-of-delivery gate is incomplete even if every automated check is green.
Per the [Bundle Separation Developer Guide §6 LE-1023], the M1 proof-of-delivery gate has two halves:
Deserialize + build pipeline (automated) — lives in
src/lfx/tests/integration/extension/test_pilot_duckduckgo_upgrade.py
and covers:
ext:duckduckgo:DuckDuckGoSearchComponent@official.lfx-duckduckgo distribution is importable and ships its
manifest where importlib.metadata.files() can discover it.DuckDuckGoSearchComponent class built from the same source file as
the bundle export — with the canonical input_value input and
dataframe output preserved so existing flows' wiring stays valid.content / snippet columns are present, max_results slicing
and max_snippet_length truncation behave correctly, and the
wrapper is called with the canonical "<query> (site:*)" template.Real cross-version swap (manual) — the pre-merge dogfood gate. This file is the checklist for that half.
The remaining question for the dogfood is therefore narrow: with the load-and-run pipeline now locked in by automated tests against a stub, the human gate only needs to answer "do real DuckDuckGo search results look materially the same between the pre- and post-migration releases?" A unit-style integration test cannot answer that because it would have to span a Python environment swap and touch the live DuckDuckGo backend. A real dogfood run by an engineer who is not on the Extension team is what actually closes LE-1023.
The checklist below is intentionally a template — fill it in, do not edit it in advance. A pre-checked checklist is not evidence.
| Field | Value |
|---|---|
| Run by | engineer name + handle |
| Date | YYYY-MM-DD |
| Pre-migration Langflow version | 1.9.x (last release before the pilot landed) |
| Post-migration Langflow version | this branch / 1.10.x |
| Result | pass / fail |
| Notes | free text |
Pre-migration save.
pip install langflow==<pre-migration version> in a clean venvlangflow run and open the UIquery to a string that produces deterministic-enough output
(e.g. "site:wikipedia.org claude shannon")Pre-migration run.
Upgrade.
pip install langflow==<this branch>
(which transitively pulls in lfx-duckduckgo)lfx extension list --format=json shows
lfx-duckduckgo at slot @officialPost-migration load.
langflow run, open the saved flow JSON from step 1data.type field — it should be
ext:duckduckgo:DuckDuckGoSearchComponent@official
(rewritten by the migration table on load)Post-migration run.
query value from step 1Sign-off.
Any of:
component-not-found-with-hint toast).If any of these fail, do not merge. File a follow-up that captures
the failure mode in
test_pilot_duckduckgo_upgrade.py
so the regression is locked in.