Consolidate trace-handle naming authority and give the single-run leg a claim path #353

Open
opened 2026-07-27 11:01:46 +02:00 by claude · 1 comment
Collaborator

Observation

Found by the #311 cycle-close architect review, and filed against this milestone because the store rebuild is where it resolves.

The trace store has one flat namespace, but authority over that namespace's shape is now spelled in three crates:

  • derive_trace_namecrates/aura-registry/src/lineage.rs:410 — mints a campaign member's handle, {campaign8}-{run}, in the crate that owns the namespace.
  • The single-run mint — crates/aura-runner/src/member.rs and measure.rs — mints {render-name}-{id8} in the assembly crate, from a digest over the run manifest (#311).
  • family_id_campaign_prefixcrates/aura-cli/src/main.rs:509-530reads the campaign shape back, in the shell, to decide which refusal arm a user-typed name reaches.

Each placement is defensible on its own and none violates an import direction, so this is not a layering fault. The cost is that a change to what a handle looks like has to be made, and kept consistent, in three places, and one of them is a parser that recovers structure from a string the other two produced.

A second, related gap: the single-run path never calls ensure_name_free. bind_tap_plan goes straight to begin_run (crates/aura-runner/src/tap_plan.rs:511), whose sole guard is create_dir_all. The store therefore cannot refuse, or even detect, a directory it did not mint — including one a user created by hand under a name that now collides with a minted handle. The campaign leg does call it (crates/aura-runner/src/runner.rs:396).

Why this belongs here

This milestone proposes the container mechanics — format, index, chunk cache, serving — as a base crate with run traces and recorded inputs as two namespaces of one container (#320). Consolidating naming authority into whichever crate ends up owning the container, and giving both legs one claim/refuse path through it, is the same move, not an extra one. Doing it before that rebuild would mean placing it twice.

Not urgent on its own: nothing is broken today, all three spellings agree, and #311 shipped with them agreeing and pinned by tests on each side.

## Observation Found by the #311 cycle-close architect review, and filed against this milestone because the store rebuild is where it resolves. The trace store has one flat namespace, but authority over that namespace's shape is now spelled in three crates: - `derive_trace_name` — `crates/aura-registry/src/lineage.rs:410` — mints a campaign member's handle, `{campaign8}-{run}`, in the crate that owns the namespace. - The single-run mint — `crates/aura-runner/src/member.rs` and `measure.rs` — mints `{render-name}-{id8}` in the assembly crate, from a digest over the run manifest (#311). - `family_id_campaign_prefix` — `crates/aura-cli/src/main.rs:509-530` — *reads* the campaign shape back, in the shell, to decide which refusal arm a user-typed name reaches. Each placement is defensible on its own and none violates an import direction, so this is not a layering fault. The cost is that a change to what a handle looks like has to be made, and kept consistent, in three places, and one of them is a parser that recovers structure from a string the other two produced. A second, related gap: the single-run path never calls `ensure_name_free`. `bind_tap_plan` goes straight to `begin_run` (`crates/aura-runner/src/tap_plan.rs:511`), whose sole guard is `create_dir_all`. The store therefore cannot refuse, or even detect, a directory it did not mint — including one a user created by hand under a name that now collides with a minted handle. The campaign leg does call it (`crates/aura-runner/src/runner.rs:396`). ## Why this belongs here This milestone proposes the container mechanics — format, index, chunk cache, serving — as a base crate with run traces and recorded inputs as two namespaces of one container (#320). Consolidating naming authority into whichever crate ends up owning the container, and giving both legs one claim/refuse path through it, is the same move, not an extra one. Doing it before that rebuild would mean placing it twice. Not urgent on its own: nothing is broken today, all three spellings agree, and #311 shipped with them agreeing and pinned by tests on each side.
claude added this to the Recorded-stream store — the data-server subsumed into an owned import path milestone 2026-07-27 11:01:46 +02:00
Author
Collaborator

Reopened — closed accidentally by a commit message that says the opposite

This issue was closed at 2026-07-27 18:37 by the push that merged the #311
cycle. That close was not intended and nothing about the issue's scope was
delivered.

The audit commit 0d6d5b1 records the routing decision in its body:

Routed rather than fixed: #353 — naming authority for one flat namespace is
[...]

Gitea's reference parser matches a close keyword followed by an optional
colon and an issue reference, so it read fixed: #353 out of that sentence
and fired a close — the negation in front of the keyword is invisible to it.
The commit is asserting that the work was not done here; the tracker
recorded the reverse.

Nothing else in the merged range was affected: #311 closed as intended, and
#320 / #352 / #354 / #355 are untouched.

The issue stands exactly as filed. Its disposition is unchanged: not urgent on
its own, and slated to be resolved inside the recorded-stream store milestone
rather than as separate work, since consolidating naming authority belongs in
whichever crate ends up owning the container.

## Reopened — closed accidentally by a commit message that says the opposite This issue was closed at 2026-07-27 18:37 by the push that merged the #311 cycle. That close was not intended and nothing about the issue's scope was delivered. The audit commit `0d6d5b1` records the routing decision in its body: > Routed rather than fixed: #353 — naming authority for one flat namespace is > [...] Gitea's reference parser matches a close keyword followed by an optional colon and an issue reference, so it read `fixed: #353` out of that sentence and fired a close — the negation in front of the keyword is invisible to it. The commit is asserting that the work was **not** done here; the tracker recorded the reverse. Nothing else in the merged range was affected: `#311` closed as intended, and `#320` / `#352` / `#354` / `#355` are untouched. The issue stands exactly as filed. Its disposition is unchanged: not urgent on its own, and slated to be resolved inside the recorded-stream store milestone rather than as separate work, since consolidating naming authority belongs in whichever crate ends up owning the container.
claude reopened this issue 2026-07-27 18:41:32 +02:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Brummel/Aura#353