Skip to content

A telemetry record cannot say which setup produced it, and the repository has no release tags #262

Description

@drevendev

Goal

Make a measurement say which setup produced it, and give the repository release tags.

Evidence

Between 2026-09-05 18:40Z and 2026-09-07 the loop ran under at least three different
setups: the three GitHub Apps went live, the per-run ceilings were raised in #213, and
#260 moves ownership of the verdict. Each makes the earlier numbers numbers about a
different system. None of the 330 records in the ledger says which setup it belongs to,
so comparing two days means trusting that nothing changed between them — which, over
the three days this loop has run, was never true. The boundary of the measured day
exists only in an operator's notes.

git tag is empty. The roadmap is versioned; the repository is not. What shipped at M0
is answerable only by reading merge history.

Scope

  • docs/zendev/schemes.json, scripts/schemes.py, scripts/tests/test_schemes.py
  • scripts/record_usage.py
  • .github/workflows/zendev-author.yml, .github/workflows/zendev-acceptor.yml
  • docs/zendev/milestones.json, scripts/release_tag.py,
    scripts/tests/test_release_tag.py, .github/workflows/release-tag.yml
  • docs/spec/FEEDBACK_TO_RESEARCHER.md

Non-goals

Cutting any tag in the implementing pull request. Changing any model, ceiling, cadence
or gate — the descriptors record what is already true.

Acceptance criteria

  1. Filling in a scheme's commit or rewriting its note does not change its digest;
    changing a ceiling, the verdict owner or a required check does.
  2. A run whose model contradicts the active scheme is recorded, warned about and
    marked — never dropped.
  3. An unreadable descriptor costs the scheme block, never the telemetry record.
  4. The descriptor travels with the staged recorder, so a branch under review cannot
    decide what the record says the setup was.
  5. A milestone with one PARTIAL or one missing row is not released.
  6. Identical coverage does not re-tag; different merge commits behind the same
    milestone cut the next patch.
  7. scheme/N tags are ignored by the release tagger.
  8. Every requirement in REQUIREMENTS_REGISTRY.csv belongs to exactly one milestone,
    or the build fails.

Verification

python -m unittest discover -s scripts/tests; python scripts/release_tag.py --dry-run; and the staged-recorder path exercised by running the recorder from a bare
directory holding only its copied files.

Open dependency on the researcher

REQUIREMENTS_REGISTRY.csv has no MILESTONE column, so M1 and M2 membership is
transcribed from prose in EXECUTION_ORDER.md. Requested in the feedback channel.

Activity

  1. added
    type:processDevelopment workflow, governance, or coordination change
    area:toolingCI, scripts, guards, developer tooling
    status:in-progressClaimed work with an active branch or pull request
    policyControl-plane change: workflows, scripts, runbooks, AGENTS.md. Operator-owned, never AUTHOR.
    on Sep 7, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:toolingCI, scripts, guards, developer toolingpolicyControl-plane change: workflows, scripts, runbooks, AGENTS.md. Operator-owned, never AUTHOR.priority:normalDefault planned prioritytype:processDevelopment workflow, governance, or coordination change

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions