Skip to content

feat: collaborator identity registry in idd-config (#86)#247

Open
kiki830621 wants to merge 1 commit into
mainfrom
idd/86-feat-collaborator-config-in-idd-config-r
Open

feat: collaborator identity registry in idd-config (#86)#247
kiki830621 wants to merge 1 commit into
mainfrom
idd/86-feat-collaborator-config-in-idd-config-r

Conversation

@kiki830621

Copy link
Copy Markdown
Member

What

Adds an OPTIONAL collaborators[] identity registry to IDD config so a person's
alias / email / display-name resolves to their GitHub login without guessing
feeding rules/tagging-collaborators.md as a resolution accelerator, never an
authority.

Why

tagging-collaborators.md forbids guessing handles from memory / git log. Today
resolution relies entirely on a live gh api .../collaborators fuzzy match, which
can't map a curated nickname / student-ID / romanization (Hardy, a 中文 name) to
the right login. A config-carried registry closes that gap while keeping the
never-guess guarantee intact.

Changes (4 touch-points)

  • references/config-protocol.md — documents the collaborators[] schema
    (github_login / display_name / role / aliases / email) in the illustrative
    JSON block + a prose section, including the PII boundary: email is
    personally-identifiable and belongs only in a private / gitignored config layer.
  • rules/tagging-collaborators.md — new Step 2.5: consult the registry
    first, but a hit still existence-verifies via gh api users/<login> before it
    counts (the table can go stale) → accelerator, not authority.
  • skills/idd-config/SKILL.mdvalidate now schema-checks the registry:
    github_login required + charset, aliases global uniqueness, role enum, and a
    PII reminder when an email appears.
  • scripts/tests/collaborators-schema/ — a 3-file drift guard (12 assertions)
    locking the schema vocabulary + PII boundary across all three docs. This is a
    C_shared_module_coord change; the real failure mode is drift (rename a field in
    one file, forget the others), so the guard pins the shared vocabulary.

Verification

  • Drift-guard fixture: 12/12 (genuine RED→GREEN — all needles were 0-occurrence pre-change).
  • Full suite (run-all-tests.sh): 22/22, new suite auto-discovered.
  • Adversarial self-review found + closed one gap: the validate PII reminder was
    documented but unanchored by the guard; added a 12th assertion so it can't be
    dropped from idd-config while config-protocol.md still advertises it.

Merge-order note

Touches the tagging family (rules/tagging-collaborators.md). #85 also edits the
tagging area — expect a textual conflict on the second-merged branch. Recommend
merging this and #85 adjacently and rebasing whichever lands second.

Refs #86

Add an OPTIONAL `collaborators[]` config array so IDD resolves a person's
alias / email / display-name to a GitHub @login without guessing, feeding the
tagging-collaborators protocol as a resolution accelerator (never an authority).

- config-protocol.md: document the collaborators[] schema (github_login /
  display_name / role / aliases / email) + PII boundary (email is private/
  gitignored-only; validate emits a PII reminder).
- tagging-collaborators.md: new Step 2.5 consults the registry FIRST, but a
  hit still existence-verifies via gh api users/<login> (table can be stale).
- idd-config/SKILL.md: validate schema-checks the registry (login format,
  aliases global uniqueness, role enum, email PII warning).
- tests/collaborators-schema: 3-file drift guard (12 assertions) locking the
  schema vocabulary + PII boundary across all three files.

Verification: drift-guard fixture 12/12, full suite 22/22, adversarial
self-review (found+closed one gap: PII reminder was unanchored in idd-config).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant