Run by Agent 3 — Pipeline & Reporting
Pipeline — stage, citation, next action
Rows, not a picture. A stage with no cited evidence cannot exist.
Uncited stage changes in the whole table: 0. Measured, not asserted — and structurally always zero, because the column it counts nulls in is NOT NULL. A non-zero number here would mean the schema had been weakened.
Open pipeline value: nothing recorded — 3 open entries carry no value_minor at all, so this is a real query over real nulls rather than a guessed total
The four refusals a stage move has to get past
- Python — move_stage() takes evidence_id as a required keyword; calling it without one is a TypeError before any SQL runs.
- NOT NULL — funnel_stage_changes.evidence_id refuses a null citation.
- FOREIGN KEY — the cited id has to resolve to a real evidence row, which carries its own ref, claim and confidence.
- TRIGGER — trg_funnel_stage_needs_citation aborts an UPDATE of funnel_entries.stage_id unless a cited change row for this entry, ending at this stage, already exists. The citation is the precondition of the move, not a record of it.
The stage catalogue, in order
Contacted[DEMO] Funnel fixture B - cold outreach, no reply yetopenDEMONSTRATIONNext: Second follow-up is due; nothing to report until a reply exists.
never moved — still in the stage it was created in
No value recorded on this entry. value_minor is null, so nothing is shown — inventing a deal size would be inventing a number, and a zero here would read as a measured one.
No stage move to cite
This entry has never been moved — it still sits in the stage it was created in, so there is no move for evidence to justify. It does not mean a move happened without a reason: that is refused four independent ways.
Demonstration fixture. Seeded by elisa_content_seed.py so this screen renders a state the real chain does not reach. Not real client work, and nothing here was sent, published or promised to anyone.
Follow-up[DEMO] Funnel fixture A - inbound replyopenDEMONSTRATIONNext: Follow up once; then let it go dormant.
cited reply · ev_af4bf904fe96
No value recorded on this entry. value_minor is null, so nothing is shown — inventing a deal size would be inventing a number, and a zero here would read as a measured one.
The claim on record: [DEMO] Demonstration citation. This evidence row stands in for the reply that would justify a stage move; it points at the seeding script that created it, which is a file that really exists.
[DEMO] cited stage move fixture
Demonstration fixture. Seeded by elisa_content_seed.py so this screen renders a state the real chain does not reach. Not real client work, and nothing here was sent, published or promised to anyone.
Proposal sent[DEMO] Funnel fixture C - proposal outopenDEMONSTRATIONNext: Wait on a decision. No stage move without a cited reply or contract.
never moved — still in the stage it was created in
No value recorded on this entry. value_minor is null, so nothing is shown — inventing a deal size would be inventing a number, and a zero here would read as a measured one.
No stage move to cite
This entry has never been moved — it still sits in the stage it was created in, so there is no move for evidence to justify. It does not mean a move happened without a reason: that is refused four independent ways.
Demonstration fixture. Seeded by elisa_content_seed.py so this screen renders a state the real chain does not reach. Not real client work, and nothing here was sent, published or promised to anyone.
3 rows · elisa.db: funnel_entries ⋈ funnel_stages ⋈ counterparties · read 2026-10-25T19:12:29.959Z
1 row · elisa.db: funnel_stage_changes ⋈ evidence · read 2026-10-25T19:12:29.959Z