Glyph Specs

Value Card (example)

project: Glyph Rails Pack (staging)
audience: Maintainers & reviewers
date: 2025-08-21
sunset: 2026-02-01

rights:
  - no coerced harm
  - informed consent & appeal
  - reversibility where possible
  - transparency/auditability (hash-log)
  - fairness bound: "no protected-class blowups"

goals:
  - truthfulness (tests/replications)
  - safety (incidents↓, tail-risk↓)
  - usefulness (time-to-artifact↓)
  - access (cost↓, reach↑)

brakes:
  two_keys:
    - name: Reviewer A
    - name: Reviewer B
  proof_of_pause: https://registry.glyphai.org/status
  hash_log: https://registry.glyphai.org/log/head
  appeal: mailto:appeal@glyphai.org

notes: "Means (AI/tools) must run inside this card; violations pause by default."

Hash-Log (schema + verify)

One JSON per line; each line’s hash is sha256 of ts|actor|event|payload|prev.

{"ts":"2025-08-21T20:52:00Z","actor":"system","event":"run","payload":{"build":"abc123"},"prev":"","hash":"..."}
{"ts":"2025-08-21T20:54:00Z","actor":"human@ex","event":"pause","payload":{"reason":"staging test"},"prev":"<hash1>","hash":"<hash2>"}

Verify (Python):

import json, hashlib, sys
prev=""; ok=True
for i,line in enumerate(open(sys.argv[1])):
    obj=json.loads(line)
    computed=hashlib.sha256((obj["ts"]+"|"+obj["actor"]+"|"+obj["event"]+"|"+
        json.dumps(obj["payload"],sort_keys=True)+"|"+obj["prev"]).encode()).hexdigest()
    if obj["prev"]!=prev or obj["hash"]!=computed:
        print("TAMPER @ line", i+1); ok=False; break
    prev=obj["hash"]
print("OK" if ok else "TAMPER")

Proof-of-Pause (staging)

  1. Identity: show build/attestation ID (e.g., abc123)
  2. Receipt: append a pause entry to the hash-log
  3. Effect: set status=PAUSED within N sec; telemetry read-only
  4. Evidence: public verify endpoint shows PAUSED @ <time> & log head

10-sec verify: visit https://registry.glyphai.org/status (staging).