{"id":50665691,"url":"https://github.com/samuraiwriter7/structure-fingerprint-v0.1","last_synced_at":"2026-06-08T06:04:55.935Z","repository":{"id":357523857,"uuid":"1237339266","full_name":"SamuraiWriter7/Structure-Fingerprint-v0.1","owner":"SamuraiWriter7","description":"Minimal spec for Structure Fingerprint v0.1: JSON Schema, examples, and CI for proof/inference-separated text trace objects.","archived":false,"fork":false,"pushed_at":"2026-05-13T05:26:52.000Z","size":35,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-13T07:12:49.415Z","etag":null,"topics":["c2pa","discourse-analysis","json-schema","lineage","provenance","semantic-validation","structure-fingerprint","stylometry","text-analysis","trace-protocol"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SamuraiWriter7.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-13T05:06:15.000Z","updated_at":"2026-05-13T05:25:56.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/SamuraiWriter7/Structure-Fingerprint-v0.1","commit_stats":null,"previous_names":["samuraiwriter7/structure-fingerprint-v0.1"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/SamuraiWriter7/Structure-Fingerprint-v0.1","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SamuraiWriter7%2FStructure-Fingerprint-v0.1","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SamuraiWriter7%2FStructure-Fingerprint-v0.1/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SamuraiWriter7%2FStructure-Fingerprint-v0.1/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SamuraiWriter7%2FStructure-Fingerprint-v0.1/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SamuraiWriter7","download_url":"https://codeload.github.com/SamuraiWriter7/Structure-Fingerprint-v0.1/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SamuraiWriter7%2FStructure-Fingerprint-v0.1/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34050249,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-08T02:00:07.615Z","response_time":111,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["c2pa","discourse-analysis","json-schema","lineage","provenance","semantic-validation","structure-fingerprint","stylometry","text-analysis","trace-protocol"],"created_at":"2026-06-08T06:04:36.458Z","updated_at":"2026-06-08T06:04:55.926Z","avatar_url":"https://github.com/SamuraiWriter7.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Structure Fingerprint v0.1\n\nA minimal specification for representing multi-layer evidence about a text artifact by separating proof-oriented provenance, inference-oriented structural similarity, and risk/uncertainty signals.\nThis repository provides a JSON Schema, valid/invalid examples, and CI validation for structure-aware trace and lineage workflows.\n\n---\n\n## Overview\n\nHistorically, proving “who said it first” was difficult, especially when text was\ncopied, paraphrased, partially quoted, or reposted without durable provenance.\n\nStructure Fingerprint v0.1 treats that problem as an engineering problem rather\nthan a purely interpretive one.\n\nThe core design principle is simple:\n\n- **proof-oriented evidence** and\n- **inference-oriented evidence**\n\nmust be stored and validated separately.\n\nThis specification does **not** claim absolute authorship or absolute origin.\nInstead, it defines a reproducible evidence object for reasoning about:\n\n- lineage\n- proximity\n- origin candidacy\n- downstream trace-aware allocation\n\n---\n\n## Design Goals\n\nThis specification aims to provide:\n\n1. a minimal, reproducible structure for text-oriented fingerprint objects\n2. strict separation between proof, inference, and risk layers\n3. JSON Schema validation for structural correctness\n4. semantic validation for meaning-level consistency\n5. a clean base for future trace, lineage, and allocation protocols\n\n---\n\n## Non-Goals\n\nThis specification does **not** attempt to provide:\n\n- absolute authorship proof\n- legal truth by itself\n- a universal allocation formula\n- a complete discourse parser or style engine\n- a final standard for provenance interoperability\n\nIt is a **minimal foundation**, not a total solution.\n\n---\n\n## Core Principles\n\n### 1. Separation of layers\n\nProof-oriented evidence and inference-oriented evidence MUST be stored and\nvalidated in separate namespaces.\n\n### 2. Deterministic recomputation\n\nA fingerprint SHOULD be reproducible from the same input text under the same:\n\n- canonicalization profile\n- model versions\n\n### 3. No single source of truth\n\nA structure fingerprint does not assert absolute authorship or absolute origin.\nIt represents structured evidence for:\n\n- lineage\n- proximity\n- origin candidacy\n\n### 4. Explicit uncertainty\n\nUncertainty and attack-risk signals MUST be recorded explicitly and MUST NOT be\nsilently merged into provenance evidence.\n\n---\n\n## Object Model\n\nA `Structure Fingerprint` object is organized into five top-level namespaces:\n\n- `meta`\n- `canon`\n- `proof`\n- `inference`\n- `risk`\n\n### Layer summary\n\n#### `meta`\n\nObject metadata such as:\n\n- fingerprint ID\n- creation time\n- spec version\n- source URI\n- producer system\n\n#### `canon`\n\nCanonicalization context and canonical text hash, used to support\nreproducibility.\n\n#### `proof`\n\nProof-oriented evidence, such as:\n\n- hard-binding hashes\n- provenance manifests\n- publication metadata\n- signing status\n\n#### `inference`\n\nInference-oriented structural signals, such as:\n\n- style embedding references\n- discourse graph references\n- rhetorical operator distributions\n- explanation spans\n\n#### `risk`\n\nRisk and uncertainty signals, such as:\n\n- obfuscation risk\n- impersonation risk\n- paraphrase resilience\n- confidence intervals\n- model disagreement\n\n---\n\n## Repository Structure\n\n```text\n.\n├── .github/\n│   └── workflows/\n│       └── validate-specs.yml\n├── examples/\n│   ├── invalid/\n│   └── structure-fingerprint.sample.json\n├── schemas/\n│   └── structure-fingerprint-v0.1.schema.json\n├── LICENSE\n├── README.md\n└── structure-fingerprint-v0.1.yaml\nSpecification Files\nMain files\nstructure-fingerprint-v0.1.yaml\nhuman-readable source specification\nschemas/structure-fingerprint-v0.1.schema.json\nJSON Schema (Draft 2020-12) for validating a Structure Fingerprint object\nexamples/structure-fingerprint.sample.json\ncanonical positive sample\n.github/workflows/validate-specs.yml\nCI workflow for schema and semantic validation\nNegative test files\nexamples/invalid/*.schema-fail.json\nsamples that MUST fail at the schema layer\nexamples/invalid/*.semantic-fail.json\nsamples that MUST pass the schema layer but fail at the semantic layer\nMinimal Field Structure\n\nAt minimum, a valid object contains:\n\nmeta\ncanon\nproof\ninference\nrisk\nMinimal conceptual form\n{\n  \"meta\": {},\n  \"canon\": {},\n  \"proof\": {},\n  \"inference\": {},\n  \"risk\": {}\n}\n\nThe detailed constraints are defined in:\n\nschemas/structure-fingerprint-v0.1.schema.json\nSchema Usage\n\nThis repository provides a JSON Schema and validation workflow for\nStructure Fingerprint v0.1.\n\nThe goal is not to assert absolute authorship or absolute origin, but to\nvalidate a structured evidence object that separates:\n\nproof-oriented evidence\ninference-oriented evidence\nrisk and uncertainty signals\nFiles\nschemas/structure-fingerprint-v0.1.schema.json\nJSON Schema (Draft 2020-12) for the Structure Fingerprint object\nexamples/structure-fingerprint.sample.json\ncanonical valid sample\nexamples/invalid/\nintentionally invalid examples for negative testing\n.github/workflows/validate-specs.yml\nCI workflow for schema and semantic validation\nWhat is validated\n\nThe validation pipeline checks two layers.\n\n1. Schema validation\n\nThis layer validates the structural shape of the object:\n\nJSON syntax validity\nrequired fields\ntype constraints\nenums\npatterns\nURI / date-time formats where declared\nnamespace separation of:\nmeta\ncanon\nproof\ninference\nrisk\n2. Semantic validation\n\nThis layer validates cross-field meaning and internal consistency:\n\nend_char \u003e= start_char for explanation spans\ninterval.upper \u003e= interval.lower\nrhetorical operator weights are approximately 1.0\ncanon.canonical_text_hash and proof.hard_binding.content_hash\nare checked for consistency when both are present\nsuspicious combinations such as very high confidence with high attack-risk\nconfidence values outside declared intervals\ntime-order anomalies such as publication_time \u003e created_at\nLocal validation\n\nInstall dependencies:\n\npython -m pip install --upgrade pip\npip install jsonschema\n\nRun basic schema validation locally:\n\npython - \u003c\u003c'PY'\nimport json\nfrom pathlib import Path\nfrom jsonschema import Draft202012Validator\n\nschema_path = Path(\"schemas/structure-fingerprint-v0.1.schema.json\")\nsample_path = Path(\"examples/structure-fingerprint.sample.json\")\n\nwith schema_path.open(\"r\", encoding=\"utf-8\") as f:\n    schema = json.load(f)\n\nwith sample_path.open(\"r\", encoding=\"utf-8\") as f:\n    sample = json.load(f)\n\nvalidator = Draft202012Validator(schema)\nerrors = sorted(validator.iter_errors(sample), key=lambda e: list(e.absolute_path))\n\nif errors:\n    print(\"Schema validation failed:\")\n    for error in errors:\n        path = \".\".join(str(p) for p in error.absolute_path) or \"\u003croot\u003e\"\n        print(f\"- {path}: {error.message}\")\n    raise SystemExit(1)\n\nprint(\"Schema validation passed.\")\nPY\nDesign note\n\nPassing validation does not imply absolute authorship proof.\n\nThis specification is designed around strict separation of layers:\n\nproof.* for proof-oriented evidence\ninference.* for inference-oriented structural signals\nrisk.* for attack-risk and uncertainty\ncanon.* for reproducible canonicalization context\nmeta.* for object metadata\n\nAllocation, royalty, or downstream scoring decisions should be computed\noutside the fingerprint object itself.\n\nNegative Test Cases\n\nThis repository includes intentionally invalid examples under:\n\nexamples/invalid/\n\nThese files verify that the validation pipeline correctly rejects invalid\nStructure Fingerprint objects.\n\nPurpose\n\nNegative tests make the boundary of the specification explicit.\n\nThey confirm that:\n\nmalformed objects fail at the schema layer\nstructurally valid but semantically inconsistent objects fail at the\nsemantic layer\nthe validator distinguishes between shape errors and meaning errors\nNaming Convention\n\nInvalid example files MUST follow one of these naming conventions:\n\n*.schema-fail.json\n*.semantic-fail.json\n*.schema-fail.json\n\nA file with .schema-fail. in its name is expected to fail during\nJSON Schema validation.\n\nTypical causes:\n\nmissing required fields\ninvalid patterns\ninvalid enum values\nwrong data types\nforbidden additional properties\n\nExamples:\n\nmissing-required-meta.schema-fail.json\ninvalid-fingerprint-id.schema-fail.json\n*.semantic-fail.json\n\nA file with .semantic-fail. in its name is expected to pass\nJSON Schema validation but fail during semantic validation.\n\nTypical causes:\n\nend_char \u003c start_char\ninterval.upper \u003c interval.lower\ninconsistent cross-field values\ncontradictory metadata relationships\n\nExamples:\n\nspan-order.semantic-fail.json\ninterval-order.semantic-fail.json\nValidation expectations\n\nThe CI pipeline enforces the following rules:\n\nexamples/structure-fingerprint.sample.json MUST pass:\nschema validation\nsemantic validation\nEvery file matching *.schema-fail.json MUST fail:\nschema validation\nEvery file matching *.semantic-fail.json MUST:\npass schema validation\nfail semantic validation\n\nIf an invalid test passes unexpectedly, the workflow fails.\n\nIf a semantic-fail test already fails at the schema layer, the workflow also\nfails, because the test is misclassified.\n\nAuthoring guidance\n\nWhen adding a new invalid example:\n\nuse .schema-fail. only when the object is expected to fail schema validation\nuse .semantic-fail. only when the object is expected to satisfy the schema\nbut violate semantic rules\nkeep each invalid sample focused on one main failure condition where possible\nprefer small, minimal examples over large mixed-error cases\n\nThis keeps failures interpretable and regression checks sharp.\n\nCI\n\nGitHub Actions validates both the positive sample and the negative test set.\n\nWhat CI checks\n\nThe workflow in .github/workflows/validate-specs.yml performs:\n\nrequired file existence checks\nJSON syntax checks\nDraft 2020-12 schema validation\nsemantic validation for the valid sample\nnegative testing for invalid examples\nPositive path\n\nThe canonical sample:\n\nexamples/structure-fingerprint.sample.json\n\nmust pass:\n\nschema validation\nsemantic validation\nNegative path\n\nThe invalid samples under:\n\nexamples/invalid/\n\nmust fail according to their filename class:\n\n.schema-fail. → fail schema validation\n.semantic-fail. → pass schema validation, fail semantic validation\nFailure behavior\n\nThe workflow fails when:\n\na required file is missing\nthe schema JSON is invalid\nthe valid sample fails validation\na schema-fail test unexpectedly passes schema validation\na semantic-fail test unexpectedly passes semantic validation\na semantic-fail test fails too early at the schema layer\nWhy CI is split this way\n\nJSON Schema is excellent at validating shape, type, and declared constraints.\n\nIt is less suited for higher-order meaning constraints such as:\n\nspan ordering\ninterval ordering\napproximate weight totals\nsuspicious cross-field combinations\n\nFor that reason, this repository uses a two-stage validation model:\n\nSchema layer for structural correctness\nSemantic layer for meaning-level consistency\n\nThis separation improves:\n\ndebugging clarity\nvalidator maintainability\nauditability\nextensibility for future rules\nPractical implication\n\nA sample can be:\n\nschema-invalid\nschema-valid but semantic-invalid\nfully valid\n\nThat distinction is intentional and is part of the design of this repository.\n\nValidation Philosophy\n\nThis repository is intentionally designed so that:\n\nshape is validated by JSON Schema\nmeaning is validated by semantic checks\nallocation is handled downstream\ntruth claims are never silently inferred from structural similarity alone\n\nA structurally similar text is not automatically proof of origin.\n\nA provenance chain is not automatically proof of authorship.\n\nA confidence score is not automatically truth.\n\nEach layer has its own role.\n\nIntended Use\n\nStructure Fingerprint v0.1 is intended as a minimal foundation for:\n\ntrace protocols\nlineage analysis\norigin-candidate ranking\nstructural similarity comparison\nprovenance-aware downstream allocation systems\n\nIt is especially suited for controlled or semi-controlled environments such as:\n\nnote/blog corpora\nrepository-based text archives\nclosed publication pools\nexperimental trace and allocation systems\nLimitations\n\nThis specification has important limitations.\n\n1. No absolute origin proof\n\nThis object does not prove absolute authorship or absolute first utterance.\n\n2. Inference remains probabilistic\n\nStyle, discourse, and rhetorical signals remain inference-oriented and may be\naffected by:\n\nparaphrase\nobfuscation\nimpersonation\nmodel bias\nlanguage-specific ambiguity\n3. Semantic checks are incomplete by design\n\nThe semantic layer currently captures only a small set of consistency checks.\nFuture versions may add stronger cross-field constraints.\n\n4. Allocation is out of scope\n\nThis repository does not define a binding allocation formula.\nIt only prepares the evidence object that a downstream allocation layer may use.\n\nFuture Work\n\nPossible next steps include:\n\ncomparison-result-v0.1.schema.json\nlineage relation objects\nstronger semantic rule sets\nversioned canonicalization profiles\nlanguage-specific discourse profiles\nprovenance bridge profiles\nallocation-readiness guidance\nadversarial robustness testing\nVersioning\n\nCurrent version:\n\n0.1.0\n\nVersion changes should be recorded whenever any of the following changes:\n\ncanonicalization logic\nrequired fields\nschema rules\nsemantic validation behavior\nmodel-version assumptions\nnamespace conventions\nStatus\n\nDraft.\n\nThis repository is currently a minimal engineering baseline for future\ntrace-oriented protocols.\n\nLicense\n\nUnless otherwise specified, this repository is intended to be published under:\n\nCC0-1.0 for the specification text\nimplementation-specific licenses as needed for code or tooling\n\nAdjust as appropriate for your actual repository policy.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsamuraiwriter7%2Fstructure-fingerprint-v0.1","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsamuraiwriter7%2Fstructure-fingerprint-v0.1","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsamuraiwriter7%2Fstructure-fingerprint-v0.1/lists"}