member_preferences · git:20260906.f9cef19 · 2026-09-06 · sha256 a80f992a23cef29d

member_preferences git:20260906.f9cef19A

Immutable. This exact content never changes and is served at /api/v1/blob/a80f992a23cef29d.

---
name: member_preferences
description: Read the existing member roster and attach communication preferences to canonical Person objects. Use when a consumer needs member opt-outs; the current source is a default-assignment stub.
---

# Member preferences

Supply roster identities with namespaced, skill-specific preferences.

## Inputs and outputs

The synchronous `member_preferences(dataset_name="sictic-members")` returns
`list[Person]`. `preferences_for(person)` reads the preference dictionary
without creating it; `render_member_preferences(people)` renders a Markdown table.

## Workflow and dependencies

Read the existing roster through `lib.people.discovery.persons_in_dataset`.
Under `person.adhoc_data["member_preferences"]`, default an absent
`deep_dive_invitation` value to `standard`; preserve any existing value.

The current implementation does not read a Google Sheet. The documented
invitation values are `none`, `fewer`, `standard` and `more`; consumers decide
their effect. There is no bulk-refresh registration.

## Side effects and failure behavior

Only returned in-memory Person objects are augmented. No discovery, enrichment,
external request or file write occurs. An empty valid roster returns an empty
list; missing or malformed rosters raise through the shared reader.

## Usage

```bash
conda run -n sictic-env python -m skills.harness /member_preferences
```

Both harness and direct CLI accept `--dataset`.

## References

- [Implementation](member_preferences.py)
- [Person and roster contracts](../standards_and_architecture/SKILL.md#people-identity-evidence-and-workflows)