Skip to content

Multi-file reports, one-carrier token math, and GitHub-enrichment probing#232

Merged
bgmcmullen merged 3 commits into
masterfrom
skills-report-quality-and-graph-enrichment
Jul 2, 2026
Merged

Multi-file reports, one-carrier token math, and GitHub-enrichment probing#232
bgmcmullen merged 3 commits into
masterfrom
skills-report-quality-and-graph-enrichment

Conversation

@bgmcmullen

Copy link
Copy Markdown
Contributor

Summary

Docs/skills only; no runtime code paths change. Three threads across the plugin
skills, mirrored in the claude/ and codex/ workspaces.

1. Multi-file report output

The four report skills (adoption, improvement, security, spend) now emit a
progressively-disclosed one-pager (hypaware-reports/<date>-<name>.md) plus
one markdown file per detail section, instead of a single file. The two
standing quality rules now bind the section files, not just the summary:

  • Section files are analysis, not inventory - each argues one claim and opens
    with its takeaway; a section that is only a stat table is folded back into the
    one-pager rather than shipped as a page.
  • No scope apologies (in any file) - never print "descriptive only" /
    "no recommendations here" / routing disclaimers.

2. Token math reconciled to the one-carrier rule (LLP 0035 / LLP 0026)

Usage rides exactly one row per response (the last assistant part; non-carrier
parts are null), so a plain SUM over assistant attributes.usage rows is
correct with no dedup. Verified empirically against local recordings (19,639
usage-bearing rows): usage never appears on more than one part per message, and
the old dedup query returns a byte-identical total to a plain SUM
(8,732,420 in / 15,109,690 out both ways).

  • Removed the stale "usage repeats across parts / a plain SUM overcounts ~3x"
    guidance from the spend and improvement reports and the hypaware-query skill.
  • Replaced the spend SQL with a plain SUM.
  • Switched the defensive-dedup key from conversation_id to session_id
    (conversation_id is null for Claude and only separates threads within a Codex
    session).

3. GitHub-enriched graph + mandatory reach probing

  • hypaware-graph: documents server-side GitHub enrichment (Actor / Issue /
    PullRequest / Review nodes, enriched Repo / Commit / File, new edges) and the
    bridge-ready natural keys that converge a session's HEAD commit and a PR's
    referenced commit on one node.
  • adoption report: GitHub reach is no longer a guessed "if enriched"
    condition - step 1 must probe for a github.t0 projector every run, and
    when present, step 2 must compute each gateway's real reach (repos/PRs its
    work landed in, whether it drew review), attributing sessions via cwd. When
    absent, the report states "checked - no GitHub enrichment present"; the
    phrasings "not assessed" / "not queried" for reach are banned.

Housekeeping

  • De-em-dashed the four report skills and the adoption edits per repo code style.
  • Reworded the adoption opener to drop the "the one descriptive report / no
    actions" framing.

Refs: LLP 0035 (token-usage-normalization), LLP 0026 (claude-native-granularity),
LLP 0028 (context-graph-enrichment), LLP 0032 (github-llm-graph-bridge).

🤖 Generated with Claude Code

bgmcmullen and others added 3 commits July 2, 2026 11:31
…raph (LLP 0028/0032)

Two threads across the plugin skills, mirrored in the claude/ and codex/
workspaces. Docs/skills only; no runtime code paths change.

Report authoring quality: two standing rules added to all four report skills
(adoption, improvement, security, spend) so detail pages hold the same bar as
the summary:
- Every section is analysis, not inventory: each argues one claim, opens with
  its takeaway, ties every number to meaning; cut table narration and standing
  bookkeeping prose.
- No scope apologies: scope/routing rules are authoring guidance, never report
  copy; state findings plainly and cross-link the sibling report that owns the
  action.

GitHub-enriched graph + routing to it:
- hypaware-graph: document server-side GitHub enrichment (Actor/Issue/
  PullRequest/Review nodes, enriched Repo/Commit/File, new edges); explain
  bridge-ready natural keys that converge a session's HEAD commit and a PR's
  referenced commit on one node; add the git provenance sub-web to the base
  model (Repo/Commit, in/at); add a graph-vs-messages boundary; document
  freshness/settling caveats. De-em-dashed per repo code style.
- hypaware-query: cross-link to the graph for descriptive who-used-what rollups.
- adoption report: per-gateway GitHub reach (repos/PRs work landed in, whether
  it drew review), dated to graph projection freshness.
- improvement report: optional GitHub outcome lens as a proxy sticking-point
  signal.

Refs: LLP 0028 (context-graph enrichment), LLP 0032 (github-llm-graph-bridge).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…r rule

Report skills (adoption, improvement, security, spend), mirrored across the
claude/ and codex/ workspaces. Docs/skills only; no runtime code paths change.

Multi-file report output: the four reports now emit a progressively-disclosed
one-pager (`hypaware-reports/<date>-<name>.md`) plus one markdown file per
detail section, instead of a single file. The two standing quality rules now
bind the section files, not just the summary: each section file argues one
claim and opens with its takeaway, and a section that is only a stat table is
folded back into the one-pager rather than shipped as a page. The
"no scope apologies" rule applies in every file.

Token math reconciled to the one-carrier rule (LLP 0035 / LLP 0026): usage
rides exactly one row per response (the last assistant part; non-carrier parts
are null), so a plain SUM over assistant `attributes.usage` rows is correct
with no dedup. Verified empirically against local recordings (19,639
usage-bearing rows): usage never appears on >1 part per message, and the old
dedup query returns a byte-identical total to a plain SUM. Removed the stale
"usage repeats across parts / a plain SUM overcounts ~3x" guidance from the
spend and improvement reports and the hypaware-query skill, replaced the spend
SQL with a plain SUM, and switched the defensive-dedup key from
conversation_id to session_id (conversation_id is null for Claude and only
separates threads within a Codex session).

De-em-dashed the four report skills per repo code style, and reworded the
adoption opener to drop the "the one descriptive report / no actions" framing.

Refs: LLP 0035 (token-usage-normalization), LLP 0026 (claude-native-granularity).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
… guess

Ported from a hand-edit made in the installed ~/.claude copy, mirrored across
the claude/ and codex/ workspaces. Docs/skills only.

Step 1 now requires actively probing for GitHub enrichment every run (a concrete
`node`/`edge` query against the source) rather than assuming the "if enriched"
condition. When a `github.t0` projector with PullRequest / Review nodes is
present, GitHub reach is in scope and MUST be computed in step 2 (attributing
sessions to a gateway via `cwd`); when absent, the report states
"checked - no GitHub enrichment present" explicitly. The phrasings "not
assessed" / "not queried" for reach are banned, since they signal a skipped
probe. De-em-dashed per repo code style.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@bgmcmullen bgmcmullen requested a review from philcunliffe July 2, 2026 21:59
@bgmcmullen bgmcmullen merged commit 7fac400 into master Jul 2, 2026
6 checks passed
@bgmcmullen bgmcmullen deleted the skills-report-quality-and-graph-enrichment branch July 2, 2026 22:00
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.

1 participant