Multi-file reports, one-carrier token math, and GitHub-enrichment probing#232
Merged
Merged
Conversation
…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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Docs/skills only; no runtime code paths change. Three threads across the plugin
skills, mirrored in the
claude/andcodex/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) plusone markdown file per detail section, instead of a single file. The two
standing quality rules now bind the section files, not just the summary:
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 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
SUMover assistantattributes.usagerows iscorrect 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).
SUMovercounts ~3x"guidance from the spend and improvement reports and the hypaware-query skill.
SUM.conversation_idtosession_id(
conversation_idis null for Claude and only separates threads within a Codexsession).
3. GitHub-enriched graph + mandatory reach probing
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.
condition - step 1 must probe for a
github.t0projector every run, andwhen present, step 2 must compute each gateway's real reach (repos/PRs its
work landed in, whether it drew review), attributing sessions via
cwd. Whenabsent, the report states "checked - no GitHub enrichment present"; the
phrasings "not assessed" / "not queried" for reach are banned.
Housekeeping
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