Skip to content

B-0024 steps 5–6: what the high labels are made of, and whether properties/args share a vocabulary - #135

Merged
mobileskyfi merged 3 commits into
mainfrom
b-0024-step5-high-provenance
Aug 1, 2026
Merged

B-0024 steps 5–6: what the high labels are made of, and whether properties/args share a vocabulary#135
mobileskyfi merged 3 commits into
mainfrom
b-0024-step5-high-provenance

Conversation

@mobileskyfi

@mobileskyfi mobileskyfi commented Aug 1, 2026

Copy link
Copy Markdown
Contributor

Continues briefings/B-0024-command-prose-join.md after step 4 (PR #134). Three parts: the outward-facing issue edits, and two measurements — the second of which reorders the briefing's agenda.

Step 5 — provenance of the shipped high labels

resolveToDir walks any deeper mention back to its nearest real menu (added so /certificate/import file-name=x counts for /certificate), which means a section that never names a menu can still supply exact-match evidence for it.

Evidence for the exact match Rows Share of high
the section names the menu itself 1,581 80.3%
only a deeper path collapsed onto it 388 19.7%

Half the collapsed set is the collapse working as designed (the overlay calls the name settable at the menu for 196 of 388). The failure mode is a section documenting a command's output claiming to be about its menu/interface/wifi + ssid returns the scan-result prose at high above the configuration prose at medium, and the overlay confirms it independently (interface/wifi/scan · ssid = Read-only Argument). Confirmable class: 24 rows.

The cheap fix is measurably wrong: refusing to collapse read-only verbs demotes 147 rows, of which the overlay says 54 are settable at the menu anyway and 0 are genuinely read-only there. cliref_fields.field_kind is the signal; verb shape is not. Disposition: recorded, not built — 24 rows does not justify collapse provenance in menu-paths.ts plus a cliref dependency in property-confidence.ts.

Step 6 — do properties and args even share a vocabulary?

New census (src/eval/vocabulary-alignment.ts). Steps 3–5 all asked which menu a row belongs to; this asks whether the two stores agree on what an attribute is called, because a perfect menu join cannot align prose with schema if the name join fails underneath it.

The 1,271 rows inspect has never heard of are mostly not a naming problem:

Why the tree cannot see it Rows Share
overlay: read-only only 670 52.7%
unknown to the overlay too 309 24.3%
overlay: settable only 280 22.0%
overlay: both kinds 12 0.9%

Reverse direction, never counted before: of 2,720 distinct argument names, 1,104 (40.6%) have no prose row anywhere#61's "known, undocumented" population as a generous name-level upper bound.

Dotted names are ambiguity, not absence: 244 dotted args, 0 documented under the full name, 150 under the bare leaf — and the model explains only 4 of the 1,271 unmatched rows, because those leaves are usually also plain args elsewhere. So #61 BL-3's descriptions exist; the defect is one prose row standing in for several attributes.

What it changes

  1. The CLI-Reference overlay is the vocabulary bridge, not inspect — not because it is bigger (inspect has 36,099 arg rows to its 10,118 fields) but because it is complementary exactly where inspect is blind: field_kind and version-less/hardware-independent coverage.
  2. Proximity is no longer the only thing gating alignment and may not be first: it answers which menu and does nothing for roughly half this gap.
  3. The prior question to "what is the missing key" is "what is the missing row" — the schema store models settable input for one architecture; the corpus documents settable input, read-only state, and hardware variants for all of them.

Issue edits (no code)

Validation

  • bun test — 1,128 pass / 0 fail
  • bun run lint — clean
  • Both censuses rerun and reproduce every figure quoted here and in the briefing
  • No CHANGELOG.md entry: measurement only, no shipped behaviour changed

🤖 Generated with Claude Code

Step 4 measured which labels changed. This asks what the surviving ones rest
on: `resolveToDir` walks any deeper mention back to its nearest real menu, so a
section that never names a menu can still supply exact-match evidence for it —
the strongest tier.

Measured on v0.11.2-alpha.109 by extending the committed census: 19.7% of `high`
(388 of 1,969) comes from collapsed evidence. Half of that is the collapse doing
its job (the overlay calls the name settable at the menu for 196). The failure
mode is a section documenting a command's *output* claiming to be about the
command's *menu* — `/interface/wifi` + `ssid` returns the scan-result prose at
`high` above the configuration prose at `medium`. Confirmable class: 24 rows.

The cheap fix is measurably wrong: refusing to collapse read-only verbs would
demote 147 rows, 54 of which the overlay says are settable at the menu anyway
and 0 of which it says are read-only there. `cliref_fields.field_kind` is the
signal; verb shape is not. Disposition: recorded, not built — 24 rows does not
justify collapse provenance in menu-paths.ts plus a cliref dependency inside
property-confidence.ts.

Also marks briefing steps 2 and 5 done: #131 is narrowed to Option C in its
issue body, and #58/#61 carry post-step-4 re-anchor comments re-running their
original symptoms.

No CHANGELOG entry: the census is a dev measurement tool, not a user-visible
surface, and no grading behaviour changed.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings August 1, 2026 15:14
@coderabbitai

coderabbitai Bot commented Aug 1, 2026

Copy link
Copy Markdown

Review Change Stack

Important

Review skipped

Auto incremental reviews are disabled on this repository.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 10cd350f-9256-45ac-90f3-3e35073b0531

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

The evaluation now measures whether high-confidence matches come from explicit menu names or collapsed command paths. It also checks CLI-Reference field kinds, reports read-only mismatches, and documents the resulting findings and deferred demotion approach.

Changes

Command prose evidence analysis

Layer / File(s) Summary
Step 5 confidence census
src/eval/command-prose-join.ts
The census uses resolveToDir, retains source property rows, classifies named and collapsed evidence, checks field kinds, and reports read-only verb mismatches.
Briefing outcomes and follow-up
briefings/B-0024-command-prose-join.md
The briefing records the 19.7% collapsed-evidence subset, the 24-row read-only-output class, completed re-anchoring work, and deferred field_kind-aware demotion.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Possibly related PRs

  • tikoci/rosetta#62: Provides the command-to-page path alignment used by the resolveToDir analysis.
  • tikoci/rosetta#134: Extends the same command-prose census with confidence and read-only field analysis.

Suggested reviewers: copilot

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly identifies the B-0024 analysis of high labels and the comparison of properties and arguments.
✨ Finishing Touches 💡 1
🛠️ Fix failing CI checks 💡
  • Create stacked PR
  • Commit on current branch
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch b-0024-step5-high-provenance

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Extends the existing command↔prose join census (src/eval/command-prose-join.ts) with “Step 5” measurements to break down what evidence the shipped high property-confidence labels actually rest on (direct menu mentions vs resolveToDir-collapsed deeper paths), and records the new findings in the B-0024 briefing.

Changes:

  • Add Step 5 counters and reporting to split surviving high labels by exact-match provenance (named menu vs collapsed deeper path) and corroborate subsets via the CLI-Reference overlay.
  • Update briefings/B-0024-command-prose-join.md with Step 5 results, interpretation, and disposition notes; bump last_revisited.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.

File Description
src/eval/command-prose-join.ts Adds Step 5 census logic to attribute high labels to direct vs collapsed evidence, plus overlay-based corroboration counts.
briefings/B-0024-command-prose-join.md Documents Step 5 methodology/results and updates the recommended-next-steps narrative and revisit triggers.

Comment thread src/eval/command-prose-join.ts Outdated
Steps 3-5 asked which menu a property row belongs to. This asks whether the
two stores agree on what an attribute is called — a perfect menu join cannot
align prose with schema if the name join fails underneath it.

Measured on v0.11.2-alpha.109 by a new census, with the CLI-Reference overlay
as referee (the only store distinguishing settable from read-only, and the only
version-less one). The 1,271 property rows inspect has never heard of decompose
into two mismatches, neither of which is about spelling:

- 670 (52.7%) are read-only fields. inspect `arg` rows model settable input, so
  a documented output column can never appear there.
- 280 (22.0%) are settable somewhere, just not on the device this tree was
  dumped from — CRS1xx/2xx switches alone account for 191, and
  /interface/ethernet/poe has 0 rows in `commands` at all.
- 309 (24.3%) are unknown to the overlay too.

Reverse direction, never counted before: of 2,720 distinct argument names,
1,104 (40.6%) have no prose row anywhere — #61's "known, undocumented"
population, as a generous name-level upper bound.

Dotted names are ambiguity, not absence: 244 dotted args, 0 documented under
the full name, 150 under the bare leaf, and the model explains only 4 of the
1,271 unmatched rows.

Consequences recorded in the briefing: the overlay is the vocabulary bridge
because it is complementary exactly where inspect is blind; proximity answers
"which menu" and does nothing for roughly half this gap; and the prior question
to "what is the missing key" is "what is the missing row".

No CHANGELOG entry: measurement only, no shipped behaviour changed.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@mobileskyfi mobileskyfi changed the title B-0024 step 5: measure what the shipped high labels are made of B-0024 steps 5–6: what the high labels are made of, and whether properties/args share a vocabulary Aug 1, 2026
Review fixes:
- cspell: rename the census's `unk` CTE to `unmatched`; add `essid` and
  `wiliot` to project-words.txt. This is what failed CI.
- Copilot: both censuses now probe for the cliref_* tables instead of
  unconditionally preparing against them. The overlay arrived in schema 11 and
  every other figure derives from properties/commands alone, so an older or
  overlay-less DB degrades to "no cross-check" with a printed note rather than
  crashing a census that is otherwise still valid.

Docs, recording the layering model the maintainer proposed and this pass
checked against the artifact:

- DESIGN.md gains "What each store is authoritative for", because it governs
  which store should be the base for future alignment work. Three measurements
  behind it: the overlay has commands but not the CRUD verb layer (2 of 441
  Command entries end in a CRUD verb); inspect is where the verbs live (print
  540, get 539, set 428, add 301); and inspect's `arg` rows are a verb's
  *inputs*, so /print and /get expose CLI options, not read-only state —
  `running`, `rx-packet`, `tx-byte`, `last-seen` and `actual-mtu` appear 0 times
  as args anywhere.
- B-0024 records the same claims as a checked table, including the one
  correction: print/get expose neither read-only nor writable fields. That
  strengthens the reading rather than weakening it — read-only fields are
  exclusively an overlay concern, with no inspect query that recovers them.
- B-0024 step 8 re-orders the agenda around the store question, and demotes the
  step-7 extractor fix (it deepens reliance on the join we want to stop using).
- BACKLOG gains a trigger for the overlay-as-base path vocabulary, which is a
  canonicalization question owned by centrs' explain work, not rosetta-local.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
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