Skip to content

Commit a77f836

Browse files
tedsluisclaude
andcommitted
docs: apply project-wide audit findings from AUDIT_REPORT_2026-08-28.md
Resolves every finding from the 2026-08-28 audit: mechanical documentation fixes applied directly (rule-9a rewrites, forward pointers, stale TODO.md/ id_registry.csv sync, a video-checked CAP-004 UUID correction), and every FACT-promotion/ADR/judgment-call item walked through individually with the maintainer before being applied or declined. - DECISIONS.md: new ADR-016, retroactively signing off 7 FACT claims from 2026-08-18 (EQ field-to-band mapping/gain-clamp/preset quintets, and four CAP-016 hardware-behavior facts) that had never gone through maintainer review, unlike every other FACT promotion in the project. - PROTOCOL.md: ADR-016 cited throughout; CTKD section synced with CAP-014's second confirming instance; misleading changelog "not yet reviewed" tags cleaned up; a battery-message-code spec citation added as a PROPOSAL (Google's official spec confirms Group 0x03 Code 0x03 = "Battery updated", matching CAP-009's own candidate); a firmware-version (4.467 vs release_5.203) reconciliation gap flagged. - TESTPLAN_BLUETOOTH_HCI_SNOOP.md: corrected the PAIR-003 "first Pixel 7a occurrence" claim to CAP-006 (was wrongly attributed to CAP-012). - DESKRESEARCH_FINDINGS.md: new entry consolidating the 5-session btsnoop-vs-btsnooz extraction-path comparison, previously scattered across inline notes. - TODO.md: closed out CAP-008/009/013 as done, corrected stale priority ordering, added a technical-debt entry and three new-capture research ideas. - 10 capture files: rule-9a-compliant rewrites-in-place, forward-pointer backfills to superseding captures, ADR-008 scope corrections, a UUID digit fix in CAP-004 (video-checked before correcting), a date typo, and a stale checklist tick. The audit report itself has been deleted — its findings are now either applied or explicitly declined per the maintainer's review. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Bjo12itgeoZW8rPFPXUZvz
1 parent 593ce55 commit a77f836

19 files changed

Lines changed: 296 additions & 133 deletions

File tree

CAPTURE_BLUETOOTH_HCI_SNOOP.md

Lines changed: 8 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -138,19 +138,14 @@ The supported, working method on both phones:
138138
6. Once you've confirmed extraction worked, you can disable the HCI snoop toggle again
139139
(§2 step 3) to avoid unnecessary background logging and disk usage between sessions.
140140

141-
> **PROPOSAL — pending maintainer approval (added 2026-08-27, `CAP-032-FINDINGS.md` §0.1/§7 Test
142-
> C):** step 3 (raw file) and step 4 (`btsnooz.py` fallback) are not interchangeable in practice —
143-
> across the four `Group A`-repeat captures to date, every session extracted via step 4
144-
> (`CAP-012`, `CAP-013`, `CAP-031`) came out severely ACL-truncated (`capinfos`-inferred ~15–126-byte
145-
> per-packet cap — RFCOMM data payloads beyond that are lost), while the one session extracted via
146-
> step 3 (`CAP-032`) came out fully untruncated (`frame.cap_len == frame.len` throughout). This is
147-
> one data point on the "raw" side against three on the "btsnooz" side, not a controlled test (no
148-
> single session has been extracted both ways for direct comparison) — but it's consistent enough
149-
> that **always check step 3 first and prefer it whenever the raw file is present**, and **always
150-
> record which path a given capture actually used** in that capture's own `CAP-NNN-FINDINGS.md`
151-
> (per `PROJECT_RULES.md` rule 11's reproducibility requirement) — a capture's usability for
152-
> anything beyond short control-frame sequencing may depend on this choice, not just on what
153-
> happened during the session itself.
141+
> **PROPOSAL — pending maintainer approval:** step 3 (raw file) and step 4 (`btsnooz.py` fallback)
142+
> are not interchangeable in practice — **always check step 3 first and prefer it whenever the raw
143+
> file is present**, and **always record which path a given capture actually used** in that
144+
> capture's own `CAP-NNN-FINDINGS.md` (per `PROJECT_RULES.md` rule 11's reproducibility
145+
> requirement) — a capture's usability for anything beyond short control-frame sequencing may
146+
> depend on this choice, not just on what happened during the session itself. See
147+
> `DESKRESEARCH_FINDINGS.md`'s 2026-08-28 entry for the full 5-session comparison and evidence
148+
> (still 🟡 HYPOTHESIS, not a controlled test).
154149
155150
---
156151

DECISIONS.md

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -622,5 +622,70 @@ motivated this).
622622
DLCI `0x04`/BLE-scan HYPOTHESES noted above; those need their own follow-up before any further
623623
promotion.
624624

625+
## ADR-016 — Retroactive sign-off: EQ field-to-band mapping/gain-clamp/preset quintets, and four `CAP-016` hardware-behavior FACTs
626+
627+
- **Date**: 2026-08-28
628+
- **Status**: Accepted
629+
- **Note on process**: this ADR was drafted by an AI agent, but per `AGENTS.md` §6's requirement
630+
for explicit human/maintainer sign-off before an agent commits a new `DECISIONS.md` ADR as
631+
settled: the maintainer directly reviewed `AUDIT_REPORT_2026-08-28.md`'s `GOV-01` finding and
632+
explicitly approved consolidating sign-off for all findings below into one ADR (session of
633+
2026-08-28). That instruction is the explicit approval this rule requires — recorded here so the
634+
provenance is auditable, not assumed.
635+
- **Context**: on 2026-08-18, `PROTOCOL.md` was updated directly from two independent capture
636+
sessions — `CAP-015` (EQ, completing/superseding `CAP-005`'s partial attempt) and `CAP-016`
637+
(Group U re-run) — promoting seven distinct claims to 🟢 FACT. Unlike every FACT promotion from
638+
2026-08-21 onward (`ADR-011``ADR-015`), these seven were never given a corresponding
639+
`DECISIONS.md` ADR or an explicit "maintainer sign-off obtained" citation; `PROTOCOL.md`'s
640+
changelog table still marked both 2026-08-18 entries "not yet reviewed by maintainer" as of
641+
`AUDIT_REPORT_2026-08-28.md`'s `GOV-01` finding. This ADR closes that gap.
642+
- **Findings being recorded**:
643+
1. **EQ field-to-band mapping** (`PROTOCOL.md` §4.2): quintet field 1↔Low bass, 2↔Bass, 3↔Mid,
644+
4↔Treble, 5↔Upper treble (wire order is the reverse of the on-screen top-to-bottom order).
645+
Evidence: `CAP-015-FINDINGS.md` §5 — all 5 sliders dragged individually, 3 passes each; 4 of 5
646+
fields video-confirmed by finger-on-slider position, the 5th by elimination against a
647+
perfectly repeating field-change order across all 3 passes; matches `CAP-005`'s earlier
648+
single-band inference exactly, 5 days apart, independently.
649+
2. **Band-gain range, ±6.0 clamp** (`PROTOCOL.md` §4.2). Evidence: `CAP-015-FINDINGS.md` §4 — 8
650+
of 10 extreme-drag samples land at exactly ±6.0, the remaining 2 at 5.8/5.9 (consistent with
651+
the drag gesture not quite reaching the slider's physical edge before release, not a different
652+
clamp value). Units not independently confirmed (plausibly dB), unaffected by this promotion.
653+
3. **Confirmed preset quintets** (`PROTOCOL.md` §4.2): `Last saved`/Heavy bass/Light bass/
654+
Balanced/Vocal boost/Clarity, each a `[Low bass, Bass, Mid, Treble, Upper treble]` 5-tuple.
655+
Evidence: `CAP-015-FINDINGS.md` §5 — Heavy bass's quintet independently matches the
656+
2026-08-15 capture's own decode byte-for-byte.
657+
4. **Reconnect, Buds-initiated variant** (`PROTOCOL.md` §5.1): a single `Rcvd Connect Request`
658+
`Sent Accept Connection Request``Rcvd Connect Complete` sequence, landing within 0.5s of
659+
on-camera earbud removal from the case. Evidence: `CAP-016-FINDINGS.md` §1, frames 1213–1217.
660+
5. **Disconnect-on-redock** (`PROTOCOL.md` §7): ACL `Disconnection Complete` (reason `0x13`,
661+
Buds-initiated) fires the instant the *second* bud is placed in the case, not on lid-close
662+
alone. Evidence: `CAP-016-FINDINGS.md` §1.
663+
6. **Case-lid zero-signal** (`PROTOCOL.md` §7): opening/closing the case lid while both buds
664+
remain outside the case produces no wire-visible signal on any RFCOMM channel. Evidence:
665+
`CAP-016-FINDINGS.md` §5, independently reproducing `CAP-007-FINDINGS.md`(old) §3.4 —
666+
2-capture-confirmed.
667+
7. **DLCI 0x08 `Group 0x04 Code 0x12`'s alternating value is event-driven *and* autonomous**
668+
(`PROTOCOL.md` §6 Resolved): fires in step with DLCI-0x08 channel-(re)open events, and also
669+
continues firing during otherwise-idle stretches with no channel churn — neither purely
670+
reactive nor purely free-running. Evidence: first characterized this way in
671+
`CAP-004-FINDINGS.md` §5a Task 5 and `CAP-007-FINDINGS.md`(old) §3.2/§5, independently
672+
reconfirmed by `CAP-016-FINDINGS.md` §7 (8 pushes, cycling `0x02`/`0x03`, 2 in step with
673+
channel-(re)opens, 4 during idle stretches with no churn).
674+
- **What this ADR does NOT clear**:
675+
- EQ's outer field 16 vs. 18 ("preview" vs. "fires on slider-release") reading remains 🟡
676+
HYPOTHESIS, unaffected — `PROTOCOL.md` §4.2 already states this explicitly; not promoted here.
677+
- DLCI 0x08 Code `0x12`'s value's actual *meaning* (what `0x02`/`0x03`/`0x04` represents) remains
678+
🔴 OPEN — this ADR covers only the event-driven-and-autonomous *behavior* characterization, not
679+
the value's semantics.
680+
- `CAP-016`'s other findings, already explicitly marked "not promoted"/"awaiting maintainer
681+
sign-off" in its own §8 (the ANC settable-toggles-byte refinement, the `AndroidHeadTracker` HID
682+
decode), are **not** covered by this ADR — they remain open, as already correctly tracked.
683+
- Band-gain units (dB or otherwise) remain unconfirmed.
684+
- **Decision**: all seven findings above are accepted as 🟢 FACT.
685+
- **Consequences**: `PROTOCOL.md`'s changelog rows for 2026-08-18 updated to cite this ADR instead
686+
of "not yet reviewed by maintainer"; the corresponding body sections (§4.2, §5.1, §7 ×2, §6
687+
Resolved) gain an explicit `ADR-016` citation, matching the citation style already used for
688+
`ADR-011``ADR-015`.
689+
625690
---
626691
https://github.com/tedsluis/opencontrolpixelbudspro2/blob/main/DECISIONS.md - https://tedsluis.github.io/opencontrolpixelbudspro2/DECISIONS

DESKRESEARCH_FINDINGS.md

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,5 +162,50 @@ Status legend (consistent with `PROTOCOL.md` §0):
162162
- **Promoted to:** `PROTOCOL.md` §6 (Commands & schemas) — both results added as dated open-item
163163
updates, 2026-08-17.
164164

165+
### 2026-08-28 — Extraction-path (`btsnoop` vs. `btsnooz`) truncation pattern across all captures
166+
167+
- **Trigger:** `AUDIT_REPORT_2026-08-28.md`'s `XC-01` finding — the extraction-path pattern
168+
(`CAPTURE_BLUETOOTH_HCI_SNOOP.md` §3's own inline PROPOSAL note, first raised from `CAP-032`'s
169+
single comparison against three prior sessions) is exactly the kind of "check this byte pattern
170+
across all existing logs" correlation this document exists for, but had never been consolidated
171+
here — only as scattered per-capture notes and one inline blockquote.
172+
173+
- **Method:** for every `CAP-NNN`'s extracted log, checked (a) the filename suffix
174+
(`-btsnoop_hci.log` = raw path, `CAPTURE_BLUETOOTH_HCI_SNOOP.md` §3 step 3; `-btsnooz_hci.log` =
175+
`btsnooz.py`-from-bugreport fallback, §3 step 4) and (b) whether `frame.cap_len == frame.len` for
176+
every frame:
177+
```
178+
capinfos <CAP-NNN-btsnoop(z)_hci.log>
179+
tshark -r <CAP-NNN-btsnoop(z)_hci.log> -T fields -e frame.number -e frame.cap_len -e frame.len \
180+
| awk '$2!=$3 {c++} END{print "mismatches:", c+0}'
181+
```
182+
183+
- **Captures examined:** every capture whose own `FINDINGS.md` already documented an extraction
184+
path or truncation result — `CAP-012`, `CAP-013`, `CAP-017`, `CAP-031` (all `btsnooz`-extracted),
185+
`CAP-032` (raw-extracted). (`AUDIT_REPORT_2026-08-28.md`'s own re-verification pass additionally
186+
confirmed all other real captures — `CAP-001``CAP-011` excl. `012`/`013`, `CAP-014``CAP-016`,
187+
`CAP-019``CAP-025` — are untruncated, either raw-extracted or from a freshly-restarted log; not
188+
repeated here since none of those used the `btsnooz` fallback.)
189+
190+
- **Result (🟡 HYPOTHESIS — one data point per session, not a controlled test):**
191+
192+
| Capture | Extraction path | `capinfos` inferred cap | Mismatched frames |
193+
|---|---|---|---|
194+
| `CAP-012` | `btsnooz` fallback | 15–126 bytes (range) | 254 / 1,436 |
195+
| `CAP-013` | `btsnooz` fallback | 15 bytes (flat) | 320 / 1,747 |
196+
| `CAP-017` | `btsnooz` fallback | ~15 bytes | 268 / 1,747 |
197+
| `CAP-031` | `btsnooz` fallback | 15–126 bytes (range) | 259 / 1,747 |
198+
| `CAP-032` | raw `btsnoop_hci.log` | none (uncapped) | 0 / 2,455 |
199+
200+
4 of 4 `btsnooz`-extracted sessions came out severely ACL-truncated; the 1 raw-extracted session
201+
came out fully untruncated. This is consistent enough across 5 independent sessions to treat as
202+
a reliable *practical* rule — **always check `CAPTURE_BLUETOOTH_HCI_SNOOP.md` §3 step 3 (the raw
203+
file) first and prefer it whenever present** — but it remains 🟡 HYPOTHESIS, not 🟢 FACT: no
204+
single session has been extracted both ways for a direct controlled comparison, so this is 5
205+
data points agreeing, not an isolated causal test.
206+
207+
- **Promoted to:** `CAPTURE_BLUETOOTH_HCI_SNOOP.md` §3's existing PROPOSAL note (trimmed to point
208+
here, 2026-08-28), `TODO.md`'s "Known technical debt" section (2026-08-28).
209+
165210
---
166211
https://github.com/tedsluis/opencontrolpixelbudspro2/blob/main/DESKRESEARCH_FINDINGS.md - https://tedsluis.github.io/opencontrolpixelbudspro2/DESKRESEARCH_FINDINGS

0 commit comments

Comments
 (0)