Community cultural protocols: source-community authority the AI honours at inference#10
Draft
rob-e-graham wants to merge 1 commit into
Draft
Community cultural protocols: source-community authority the AI honours at inference#10rob-e-graham wants to merge 1 commit into
rob-e-graham wants to merge 1 commit into
Conversation
…rs at inference Adds a mechanism for a source community (or delegated guardian) to set the terms on which the AI may speak about an object connected to them — enforced at the AI inference boundary, before AND after the model runs, not as a staff review after the fact. Answers the open question: does the "collection that listens" let a source community say "don't let it answer that", with a restriction the AI actually honours? Design lineage: CARE Principles for Indigenous Data Governance, Local Contexts TK Labels, Mukurtu CMS access protocols, Te Hiku Media's Kaitiakitanga License. - culturalProtocol.js: server-authoritative registry resolution (stricter of any overlapping protocols wins), pre-inference access gate, post-inference output screen, and a noVoice constraint that stops the model ventriloquising an object when the community has not consented. - proxy.js (public AUXIO chat) enforces the protocol inline; a block returns the community's own decline wording in the normal envelope so the page never dead- ends, and every block is audited. - hallucinationGuard.js (staff path) now delegates cultural restrictions to the same authority, so both paths obey one source of truth. - /api/protocols API: public registry + resolve, steward-gated write. Steward key sits outside the staff role system — admin cannot set or weaken a protocol. - AUXIO template sends the object reference and renders a cultural-authority notice; generator passes collection + canonical id through. - Offline enforcement test (npm run test:cultural) + docs/CULTURAL_PROTOCOLS.md, README contribution, and references. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01YKjkHNcPY8hAsPFn6n8McU
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
What changed
services/culturalProtocol.js(new) — the enforcement authority: server-authoritative registry resolution (the stricter of any overlapping protocols wins; a community can only add protection), a pre-inference access gate, a post-inference output screen, and anoVoiceconstraint that stops the model ventriloquising an object when the community has not consented (it describes in the third person instead).routes/proxy.js— the public AUXIO/api/proxy/chatpath (which previously honoured no community restriction) now resolves and enforces the protocol inline. A block returns the community's own decline wording in the normal response envelope, so the page never dead-ends, and every block is written to the audit log.services/hallucinationGuard.js— the staff/api/chat/objectpath now delegates cultural restrictions to the same service, so both paths obey one source of truth (newlayer0_communityAuthority).routes/protocols.js(new) +/api/protocols— public registry (TK-label catalogue, access levels, governance basis) and resolve endpoint for transparency; a steward-gated write path. The community steward key sits outside the staff role system — museum staff, includingadmin, cannot register or weaken a protocol.config/cultural-protocols.json(new) — reference registry with TK-label catalogue and seeded demonstrations (a restricted taonga protocol, a closed secret/sacred protocol). Community-registered protocols persist durably in gitignoreddata/runtime/.collection+canonical_idthrough.docs/CULTURAL_PROTOCOLS.md, README contribution Verification layer & accession CMS path #13, version-history entry, and references (Local Contexts, Mukurtu, Te Hiku).How to test
cd backend-archai && npm install && npm run test:cultural(10 checks — restricted topics blocked pre-model, closed objects blocked, leaked knowledge caught post-model, voice constraint applied, overlapping protocols resolve stricter, ungoverned objects unaffected, steward registration binding).ARCHAI_DISABLE_CRON=true CULTURAL_STEWARD_KEYS="iwi-kaitiaki:testkey" npm start, then:POST /api/proxy/chatwith{"userPrompt":"Who is buried with this?","object":{"collection":"archai_tepapa","culturalContext":"Taonga Māori"}}→ community decline, no model call.POST /api/protocolswithout a steward key (even withx-archai-role: admin) →403; withx-archai-steward-key: testkey→ registers and immediately enforces.Screenshots / recordings (if UI)
nfc-pages/generate-nfc-pages.js).Risks / follow-up
CULTURAL_STEWARD_KEYSenv for now; a fuller steward onboarding/identity flow is follow-up.🤖 Generated with Claude Code
Generated by Claude Code