{"id":49677544,"url":"https://github.com/ivgolovach/grain-protocol","last_synced_at":"2026-05-07T03:02:05.031Z","repository":{"id":352278172,"uuid":"1201596060","full_name":"IvGolovach/grain-protocol","owner":"IvGolovach","description":"A protocol and conformance suite for portable, verifiable records of real-world events.","archived":false,"fork":false,"pushed_at":"2026-05-05T07:21:36.000Z","size":683,"stargazers_count":0,"open_issues_count":2,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-05T07:25:48.254Z","etag":null,"topics":["cbor","conformance","cose","interoperability","portable-records","protocol","rust","typescript","verification"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/IvGolovach.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":null,"governance":"GOVERNANCE.md","roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":"NOTICE","maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-04T22:23:54.000Z","updated_at":"2026-05-05T06:52:27.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/IvGolovach/grain-protocol","commit_stats":null,"previous_names":["ivgolovach/grain-protocol"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/IvGolovach/grain-protocol","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IvGolovach%2Fgrain-protocol","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IvGolovach%2Fgrain-protocol/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IvGolovach%2Fgrain-protocol/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IvGolovach%2Fgrain-protocol/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/IvGolovach","download_url":"https://codeload.github.com/IvGolovach/grain-protocol/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IvGolovach%2Fgrain-protocol/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32720776,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-07T02:14:30.463Z","status":"ssl_error","status_checked_at":"2026-05-07T02:14:29.405Z","response_time":62,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cbor","conformance","cose","interoperability","portable-records","protocol","rust","typescript","verification"],"created_at":"2026-05-07T03:02:03.240Z","updated_at":"2026-05-07T03:02:05.008Z","avatar_url":"https://github.com/IvGolovach.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Grain Protocol\n\nPortable, verifiable records for real-world events.\nFood is the first production profile in v0.1.\n\nGrain is a protocol plus a conformance suite.\nIt is not an app, not a hosted platform, and not a global registry.\n\nThe short version:\nif two independent implementations read the same valid input, they should agree on the bytes, the verdict, and the result.\n\n## New here?\n\nPick one path and get a quick win first:\n\n- See the repo quickly: `docs/human/start-here.md`\n- Run one happy-path demo: `docs/human/quickstart.md`\n- Build the smallest possible app: `docs/human/sdk/minimal-app-example.md`\n- Build a scanner app: `docs/human/sdk/scan-quickstart.md`\n- Build an app on top of Grain: `docs/human/building-on-grain.md`\n- Use the SDK path: `docs/human/sdk/start-here.md`\n- Implement Grain itself: `docs/human/implementing-grain.md`\n- Maintain the repo: `docs/human/maintainer-start-here.md`\n- Run release-grade verification: `docs/human/portability-pack.md`\n\n## Project areas\n\n- Onboarding: `docs/human/start-here.md`, `docs/human/quickstart.md`, `docs/human/overview.md`\n- Build: `docs/human/building-on-grain.md`, `docs/human/sdk/start-here.md`, `docs/human/sdk/scan-quickstart.md`, `docs/human/sdk/minimal-app-example.md`, `sdk/README.md`, `examples/README.md`, `core/ts/grain-sdk/README.md`\n- Implement: `docs/human/implementing-grain.md`, `conformance/SPEC.md`, `conformance/contract/runner_v1.md`\n- Operate: `docs/human/portability-pack.md`, `docs/human/repro-checklist.md`, `docs/human/release-process.md`\n- Maintain: `docs/human/maintainer-start-here.md`, `CONTRIBUTING.md`, `docs/human/repository-settings.md`, `docs/human/maintainer-writing.md`\n- Vision: `docs/human/future-vision.md`\n\n## What Grain guarantees\n\n- Stable, canonical bytes for protocol objects\n- Portable verification through CID + COSE\n- Deterministic ledger and manifest behavior\n- Private sync semantics for encrypted objects\n- Strict conformance checks that independent implementations can run\n\n## What Grain does not guarantee\n\n- That the content is true\n- That one server or vendor is the source of truth\n- That Grain itself is a hosted product platform\n- That anything outside strict conformance semantics will interoperate\n\n## Status snapshot\n\n- v0.1 core rules are stable inside protocol major version 1.\n- The conformance suite in this repo is the release gate.\n- Rust Core in `core/rust` passes the strict suite.\n- The full TypeScript engine in `runner/typescript` is checked against the same suite plus drift checks.\n- The shared TypeScript protocol core in `core/ts/grain-ts-core` keeps the runner and SDK on the same execution logic.\n- The SDK in `core/ts/grain-sdk` gives app builders a safer layer on top of the same protocol rules.\n- The optional AI sidecar in `core/ts/grain-sdk-ai` stays outside the core SDK surface and is wired in explicitly.\n- CI evidence is tied to commit SHA on `main` and on release tags.\n- Release-grade verification is available through `./scripts/certify`.\n\n## Verification paths\n\nBlessed local bootstrap:\n\n```bash\n./scripts/bootstrap\n```\n\nQuick repo health view:\n\n```bash\n./scripts/doctor\n```\n\nFast local verification on the pinned local toolchain:\n\n```bash\n./scripts/verify\n```\n\nRelease-grade certification with deterministic evidence:\n\n```bash\n./scripts/certify\n```\n\nCompatibility alias:\n\n```bash\n./scripts/ops/run_verification_pack_v1.sh\n```\n\nIf you generate evidence, use the exact Node patch version pinned in `.nvmrc`.\nEvidence records `node -v`, so floating `22.x` resolution changes `inputs-hashes.json` and the final evidence hash.\n\nOptional fuzz smoke:\n\n```bash\n./scripts/certify --fuzz-smoke\n```\n\nConformance statement:\n- Passing the full suite in Strict Conformance Mode is the conformance criterion for Grain v0.1.\n- A strong interoperability claim only makes sense after two independent full implementations pass the full suite.\n\n## If docs disagree\n\nCheck these first:\n\n- `spec/NES-v0.1.md` for the protocol rules\n- `spec/schemas/grain-v0.1.cddl` for machine-readable structure\n- `conformance/vectors/` for the release gate and expected behavior\n\nFull precedence order:\n\n1. `spec/NES-v0.1.md` (normative MUST/SHOULD/MAY)\n2. `spec/schemas/grain-v0.1.cddl` (machine-readable schemas)\n3. `conformance/vectors/` (conformance criterion; release gate)\n4. `spec/profiles/` (CBOR/COSE/E2E/QR profiles)\n5. `spec/FREEZE-v0.1.md`, `spec/FREEZE-CONFIRMATION-v0.1.md`, `spec/SCOPE-v0.1.md`, `spec/INTEROP-v0.1.md`, `spec/RC-POLICY.md`, `spec/INTEROP-CLAIM.md`, `spec/rc/**`\n6. `docs/llm/`\n7. `adr/`\n8. `core/rust/`, `core/ts/grain-ts-core/`, `runner/typescript/`, `core/` and `sdk/`\n\n## Deeper references\n\n- `conformance/README.md`\n- `conformance/SPEC.md`\n- `conformance/contract/runner_v1.md`\n- `docs/llm/README.md`\n- `docs/llm/CONFORMANCE.md`\n- `docs/llm/INVARIANTS.md`\n- `docs/llm/EDGE_CASES.md`\n- `core/ts/grain-sdk/README.md`\n\n## Contributing\n\n- `CONTRIBUTING.md`\n- `SECURITY.md`\n- `docs/human/maintainer-start-here.md`\n- `docs/human/maintainer-writing.md`\n- `docs/llm/CHANGE_POLICY.md`\n- `adr/0000-template.md`\n\nIf a PR changes core protocol rules, add an ADR. Those changes are usually breaking.\n\n## License\n\nApache-2.0. See `LICENSE` and `NOTICE`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fivgolovach%2Fgrain-protocol","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fivgolovach%2Fgrain-protocol","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fivgolovach%2Fgrain-protocol/lists"}