Proposal dossiers
A business person describes a problem on lumnik.fr and downloads a proposal dossier. You draft the workflow from it, then check the dossier against your data.
Check a dossier against your data
Ask the hub what it can establish on your data, against a workflow you already applied. No lm
command does this: call the hub over HTTP.
curl -X POST "$HUB/api/proposal/check?workflow=<name>" \
-H "Authorization: Bearer $TOKEN" \
--data-binary @dossier.md > dossier-checked.md
It needs lm_integrator. Mint $TOKEN as in Test the API. The answer is the
same file, checked; nothing is applied, and the original answers are untouched.
Without workflow=, the dossier is only recomputed. A workflow name that does not exist, or one
outside your scopes, gives the same answer: check the name if nothing was confirmed.
| Point | Confirmed when | Refuted when |
|---|---|---|
| a status column exists | the comparison read the column | the table is there and the column is not |
| an identifier column exists | the table has the spec.on.key column |
the table is there and does not have it (judged only if the status column exists) |
| the target is accepted by the watch validation | the workflow is stored | never |
- What only a person can establish (the column describes the lifecycle, the identifier is stable) stays to be established.
- A table not ingested yet, a timeout or a missing grant leave a point unchanged.
- The proof is about your data today.
- A dossier for another catalogue version is returned recomputed, unverified.
- A malformed dossier is a
400with the reason (duplicate-key); a file that is not UTF-8 is a400malformed-header.
Draft a workflow from a dossier
lm proposal draft writes the start of the manifest a dossier proposes. It does not contact
the hub:
lm proposal draft dossier.md \
--name orders-lifecycle --scope sales \
--table connector.t_commandes --column statut --key n_commande --after 14d \
-o orders-lifecycle.yaml
- Every flag is optional; a value you leave out is left out of the file, with a comment saying where it goes.
- States and transitions are never generated: you write them before
lm workflow apply. --afterwithout--keyis accepted here and refused at apply.- The header comments list each point, refuted first, then missing, unverified, confirmed; what no tool can check is marked to establish yourself.
-onever overwrites a file; without it the draft goes to stdout. The dossier can come from stdin (lm proposal draft -).- A dossier with no
stalled-documents@1lead, or two, is refused; other leads are named on stderr.
The loop: draft → complete and lm workflow apply -f → check the dossier against the stored
workflow (the curl above) → draft again from the checked dossier, to a new file.