Skip to content

Cross-repo contract (witness --harness JSON schema) is untraced — coordination is manual prose #347

Description

@avrabe

A coordination-feedback note from the witness side, filed alongside the methodology retrospective pulseengine.eu#94 (§4). The witness↔kiln work on the --harness contract (witness#110, #340, #343) went really well — I posted the exact witness-harness-v1 schema, kilnd implemented it, you verified it end-to-end against the real binary. But none of that dependency is traced anywhere.

The gap

  • The contract (the HarnessSnapshot JSON shape: {schema, counters:{<bare-id>:N}}) is defined in witness-core (run_record.rs).
  • kilnd's witness_harness.rs implements/consumes it.
  • Nothing records that kilnd derives from witness's schema. If witness bumps witness-harness-v1 (e.g. a v2 row shape, or a key-format change), nothing on the kiln side flags drift — it's an informal handshake that currently holds only because we coordinated by hand.

Suggestion

rivet already has the machinery: derives-from-external / cross-org-supplier-traceability (rivet #288). kiln could add a rivet artifact recording that kilnd witness_harness derives-from-external the witness HarnessSnapshot schema — {org: pulseengine, doc: witness-core/run_record, last-synced, sha256, anchor}. Then a schema change upstream is at least visible as a stale last-synced/sha256, rather than a silent break discovered at runtime.

This pairs naturally with the differential cross-check (witness#110): the cross-check catches behavioural drift (counters disagree), the traceability link catches contract drift (schema changed). Both, ideally.

Not urgent — v1 is stable and small. Filing so the dependency is on record rather than living only in issue comments. Refs: pulseengine.eu#94, pulseengine/witness#110, kiln#340, kiln#343.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions