Skip to content

docs(g-track): tick rate as ground, and the act-indexed validity horizon - #52

Merged
Hafeok merged 3 commits into
mainfrom
claude/prd-tick-rate-validity-re7ofs
Aug 20, 2026
Merged

docs(g-track): tick rate as ground, and the act-indexed validity horizon#52
Hafeok merged 3 commits into
mainfrom
claude/prd-tick-rate-validity-re7ofs

Conversation

@Hafeok

@Hafeok Hafeok commented Aug 20, 2026

Copy link
Copy Markdown
Owner

Applies Emil's 2026-08-20 addendum to docs/g-track/prd-ground-as-ontology.md, as merged through #51. Docs-only.

The correction it carries: rate of change is a property of the thing, not of a storage concern. It belongs on the registry entity, where every consumer of that entity can read it — and "data" stops being a separate specification domain.

Specified, not scheduled. Nothing in §5.6 is built until items 18–21 are ruled and the work is phased. The addendum exists so the model is written down before it is implemented, and so the "data as a separate domain" framing stops propagating in the meantime.

What changed

  • New §5.6 — Tick rate and the validity horizon. The computation and where each input lives: as_of on the Reading (§4.1), tick rate on the entity or axis, tolerance τ on the act, horizon computed per pair. Tolerance on the act is the load-bearing part — a reading is fresh for an act, not fresh in general (v5.7.0's act-indexed discharge, DDD-frame-16, applied to freshness). The tick rate is itself a Reading, declared at design time and superseded when observation arrives, so design-time assumptions are the same field at lower assurance rather than a separate mode of the system.
  • §5.6.1 — Three constraints. Rate is a distribution, not a scalar (the vocabulary must record which form a rate is, so a mean is never read as a bound); it is ground, not a tuning knob; bootstrap honestly — declared rates are superseded once observation is available, not left in place.
  • §5.6.2 — What this replaces. No data layer holding freshness policy. Caching configuration becomes a projection, not a source.
  • §3, vocabulary row. The registry vocabulary gains tick rate as a property of entities and axes, carried as a Reading, outside the tuning path.
  • Open items 18–21.

Two judgement calls

§5.6 was already occupied by Guard, so 5.6 Guard renumbers to §5.7 and its three in-text cross-references are repointed (prd-ground-as-ontology.md:547, :580, :581). Guard sits where it did, at the end of §5. The alternative — giving the addendum a different number — would have broken the §5.6 references in Edits 2 and 3.

A defect in the addendum itself, filed as item 21. §5.6's stage table gives declared rates provenance = declared, which is not in §4.1's value set (controlled / observed / inferred / institutional). Same class as the G-1 mis-pin: a value used from conversation as though it were filed. The addendum's wording is left intact and the question is recorded rather than quietly reconciled — the value set is track-owned under g-dec-01 pending the Q25/Q27/Q30 wave, so a fifth member is a filing decision, not an edit.

Item 21 is deliberately not folded into 18: 18 is the rate's shape and stays inside the G-track; 21 carries a canon consequence. Folding them would hide a filing decision inside an implementation detail. Three candidates are recorded for the ruling — a fifth value; inferred with the assumption in assurance; or a distinct axis for assumed-versus-measured, on the grounds that "assumed at design time" and "inferred by rule" may be genuinely different things.

Verification

Docs-only, +90/−5 in one file. Nothing in the test suite reads this PRD — the only code references under docs/g-track/ are to registry-template/, which this PR does not touch.


Generated by Claude Code

claude added 3 commits August 20, 2026 10:22
Applies Emil's 2026-08-20 addendum to the ground-as-ontology PRD. The
correction it carries: rate of change is a property of the thing, not of a
storage concern, so it belongs on the registry entity where every consumer
can read it — and "data" stops being a separate specification domain.

- New §5.6 "Tick rate and the validity horizon": the computation and where
  each input lives (as_of on the Reading, rate on the entity/axis, tolerance
  on the act, horizon computed per pair); the tick rate as a Reading itself,
  declared at design time and superseded by observation; §5.6.1's three
  constraints (distribution not scalar, ground not tuning knob, bootstrap
  honestly); §5.6.2's replacement of the data layer.
- The existing Guard section renumbers 5.6 -> 5.7, with its three in-text
  cross-references repointed.
- §3's vocabulary row records that the registry vocabulary gains tick rate,
  outside the tuning path.
- Open items 18-20: vocabulary shape, where tolerance is declared, and the
  limit on observation for arrangements that are not event-sourced.

Specified, not scheduled — nothing in §5.6 is built until 18-20 are ruled.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VfQpchmTnrGzxgxQF4CLaH
…alue

§5.6's stage table gives declared rates `provenance = declared`, which is not
in §4.1's value set (controlled / observed / inferred / institutional). A
defect in the addendum itself, of the same class as the G-1 mis-pin: a value
used from conversation as though it were filed.

Filed as its own item rather than folded into 18. Item 18 is the rate's shape
and stays inside the G-track; 21 is whether the provenance value set gains a
fifth member, which is track-owned vocabulary under g-dec-01 pending the
Q25/Q27/Q30 wave and therefore carries a canon consequence. Folding them would
hide a filing decision inside an implementation detail.

Three candidates recorded for the ruling: a fifth value; `inferred` with the
assumption in `assurance`; or a distinct axis for assumed-versus-measured, on
the grounds that it may be orthogonal to where a value came from.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VfQpchmTnrGzxgxQF4CLaH
§5.6's stage table carried `declared` unmarked, so a reader who reaches §5.6
without reaching §12 reproduces the error the item was filed to catch. An
unmarked wrong value in a specification is a stale projection waiting to be
cited.

The marker is a pointer, not a resolution: it flags that the question is open
without hinting at its answer. The ruling stays with item 21 and the wave's
context.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VfQpchmTnrGzxgxQF4CLaH
@Hafeok
Hafeok merged commit d0f4297 into main Aug 20, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants