Skip to the page
← All docs

Proposals

Nobody's suggestion changes the map until a person applies it. A proposal is a set of tags and join hints, each with its reason, waiting for you.

Who proposes. - Your AI client. Ask it to tag the map. It reads the columns, profiles the ones it is unsure of, and calls map_propose. It answers with the proposal's id and what it would change. - The rule pass. strata map suggest proposes the obvious tags from the map alone, without a model and without reading a row. A table's key is tagged after its table (crm.customers.c_id is customer_id), and so is a column that references a key, or whose comment names one. Columns whose name and type say email, a social security number, a card number or a date of birth get those tags. The same key in two sources gets a join hint, surest where a comment named it.

A join hint says two columns in two sources hold the same key: crm.customers.c_id and support.tickets.account_num, both customer_id. Both columns must carry that tag, so a proposal that hints a join tags both.

Applying. - strata map proposals lists them, newest first (--status waiting). - strata map apply <id> shows what one would change, each item with its reason: + new, ~ a change from the tag the column has, = already there. - strata map apply <id> --yes applies it. From then on masking, map_search and db_describe_table go by it, and the map's history keeps what changed and who applied it. - strata map dismiss <id> sets one aside; nothing changes.

Once paired, each proposal reaches your workspace's map, and so does each apply. No tool applies a proposal: map apply is typed by a person.

In the console. Proposals is the inbox: each proposal as its changes to the map, a line each, + new, ~ a change, = already there, with its reason. Every change starts kept; turn off the ones you do not want, then Apply writes the rest (it reads Apply 2 kept when you skipped some). Dismiss sets the whole proposal aside. Only an Owner applies or dismisses, because tags decide what is masked. Each connected agent pulls the change within seconds, and masking and db_describe_table on it go by it from then on. Applied and Dismissed list what was decided, here or on an agent.