← back to Norma
agents/instagram-agent/enrollment-hold.json
17 lines
{
"_note": "Handles DELIBERATELY held out of accounts.json. build-registry.js excludes these from the registry it writes and reports them loudly; daily-cadence.js posts to EVERY key of accounts.json, so an accidental re-add here is an accidental PUBLIC post. Re-run with --include-held to enroll one anyway (a gated decision -- Steve's). KEYS ARE MATCHED THREE WAYS -- lowercased handle key, the account's own handle field, and ig_user_id. ig_user_id is the load-bearing one: it is IMMUTABLE and it is what the publisher actually posts to (post-to.js reads acct.ig_user_id and POSTs /{ig-user-id}/media_publish), whereas an Instagram USERNAME can be changed by the account owner at any time -- a hold keyed only on handle would silently stop matching after a rename while the account kept posting. Always fill in ig_user_id when adding an entry.",
"hold": {
"designerschat": {
"reason": "IG<->Page link completed 2026-09-11, but enrollment into the live public cadence was explicitly REVERTED by Steve in commit e0dcc47 ('Revert TK-11383: enroll @designerschat'). Linked != enrolled. Without this hold, any plain `node build-registry.js` silently re-enrolls it, because the Page is inside the pages_show_list allowlist and account-themes.json gives it a keyword with no skip flag.",
"ticket": "TK-11383",
"held_since": "2026-09-11",
"held_by_commit": "e0dcc47",
"ig_user_id": "17841433398927953",
"page_id": "109985254012064",
"decision": "decided-no",
"decision_evidence": "commit e0dcc47 — Steve explicitly reverted the enrollment after it was made."
}
},
"_decision_note": "Each hold entry carries an explicit machine-readable `decision`: \"decided-no\" = Steve considered it and said no (informational; does NOT drive a drift WARN), \"pending-steve\" = never decided, an OPEN question Steve still owes an answer on (MUST keep the drift canary WARN -- suppressing it would launder an outstanding decision green). A MISSING `decision` field is read as \"pending-steve\" by check-link-drift.js, never as decided: absence of a decision is not a decision."
}