Skip to content

Commit 66bf1a5

Browse files
roy-tongRoy tong
andauthored
docs: make Healthcheck trial and evidence the repository entry point (#13)
Co-authored-by: Roy tong <tongxiarui@elliwooddeMacBook-Air.local>
1 parent 3caf573 commit 66bf1a5

6 files changed

Lines changed: 244 additions & 9 deletions

File tree

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
name: Healthcheck first run or installation feedback
2+
description: Report a useful result, confusing result, or installation blocker. No raw logs needed.
3+
title: "[Healthcheck] "
4+
body:
5+
- type: markdown
6+
attributes:
7+
value: |
8+
Thanks for trying the engineering preview. Feedback is optional.
9+
Do not upload raw logs, full JSON reports, HTML reports, or snapshots.
10+
They may contain local paths and identifiers. Use `agentmeasure share report.json`
11+
to preview an aggregate summary; inspect the exported summary yourself before posting.
12+
- type: dropdown
13+
id: outcome
14+
attributes:
15+
label: What happened?
16+
options:
17+
- Installation blocked
18+
- Installed, but own-data check blocked
19+
- Own-data report generated, but result unclear
20+
- Own-data report generated and understood
21+
- Synthetic demo only
22+
- Meaningful repeat run or comparison
23+
validations:
24+
required: true
25+
- type: input
26+
id: environment
27+
attributes:
28+
label: OS, Python, AgentMeasure version, and Codex Desktop or CLI
29+
placeholder: "macOS; Python 3.11; AgentMeasure 0.3.0; Codex Desktop"
30+
validations:
31+
required: true
32+
- type: textarea
33+
id: result
34+
attributes:
35+
label: What did you learn, or where did you get stuck?
36+
description: Explain one result in your own words and your next step. For blockers, redact any personal paths from errors.
37+
validations:
38+
required: true
39+
- type: input
40+
id: time
41+
attributes:
42+
label: Optional time to install and time to first own-data report
43+
placeholder: "Installation 2 min; own-data report 20 sec"
44+
- type: textarea
45+
id: summary
46+
attributes:
47+
label: Optional reviewed aggregate summary
48+
description: Only the output of the share command, reviewed by you. You may leave this blank.
49+
- type: dropdown
50+
id: first_touch
51+
attributes:
52+
label: Optional — where did you first hear about AgentMeasure?
53+
options:
54+
- GitHub issue, PR, or Discussion
55+
- Personal email
56+
- X
57+
- Search, documentation, or resource list
58+
- A colleague or community
59+
- Other or unknown
60+
- type: input
61+
id: conversion_touch
62+
attributes:
63+
label: Optional — what made you actually try it?
64+
description: A case study, email, integration, or another reason; no private email contents needed.

README.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,32 @@
11
# AgentMeasure
22

3+
**Find repeated failures and retries in your Codex sessions, with local evidence.**
4+
5+
Healthcheck reads existing **Codex Desktop rollout logs** and produces a terminal
6+
summary and a local HTML report. It checks duplicate records, retry chains, and
7+
consecutive tool failures. Missing evidence is **UNPROVABLE**, never silently zero.
8+
9+
```bash
10+
# Requires Python 3.9+, Git, and pipx. Installation uses the network.
11+
pipx install "git+https://github.com/roy-tong/AgentMeasure#subdirectory=healthcheck"
12+
agentmeasure demo # synthetic example; no personal logs needed
13+
agentmeasure check # your local Codex sessions, last 7 days
14+
```
15+
16+
Analysis runs locally with no runtime network calls. **Engineering preview**:
17+
Codex CLI is not yet independently verified; Claude Code is not supported yet.
18+
The Git install above is available now; PyPI publishing is being prepared.
19+
20+
[**Quick start and supported formats**](healthcheck/README.md) ·
21+
[**Try it and share feedback safely**](campaigns/healthcheck-first-run.md) ·
22+
[**What our contributions changed**](campaigns/measurement-casebook.md) ·
23+
[中文](README.zh-CN.md)
24+
25+
Found a useful result? Keep a snapshot and compare your next run. Feedback is
26+
optional: you can use the tool without opening an issue or uploading logs.
27+
28+
## Measurement infrastructure
29+
330
**The open yardstick for agent usage and AI outcomes.**
431
**Test whether your agent metrics mean what their labels claim.**
532

README.zh-CN.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,28 @@
11
# AgentMeasure
22

3+
**用本地证据,找出 Codex 会话中的重复记录、重试和连续工具失败。**
4+
5+
Healthcheck 直接读取已有的 **Codex Desktop rollout 日志**,生成终端摘要和
6+
本地 HTML 报告。每项发现有证据;无法判断就显示 UNPROVABLE,不伪装成零。
7+
8+
```bash
9+
# 需已有 Python 3.9+、Git、pipx;安装需要网络
10+
pipx install "git+https://github.com/roy-tong/AgentMeasure#subdirectory=healthcheck"
11+
agentmeasure demo # 合成示例,无需个人日志
12+
agentmeasure check # 本机 Codex 最近 7 天日志
13+
```
14+
15+
分析过程本地运行,不发网络请求。当前为工程预览版:Codex CLI 尚未独立验证,
16+
Claude Code 暂不支持。上面的 Git 安装现在可用,PyPI 发布仍在准备中。
17+
18+
[**快速开始与支持范围**](healthcheck/README.md) ·
19+
[**试跑和安全反馈**](campaigns/healthcheck-first-run.md) ·
20+
[**公开贡献案例**](campaigns/measurement-casebook.md) · [English](README.md)
21+
22+
有用的结果可以保存快照,下次运行时比较。无需上传日志或开 issue 才能使用。
23+
24+
## 计量基础设施
25+
326
**Agent 经济缺一把公尺——AI 用了什么、干得怎么样,行业还没有统一的算法。**
427
**度量 Agent 的真实使用——别把重试当成用户。**
528

campaigns/30-projects-30-days.md

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ This sprint asks each project one question:
2525

2626
| # | Project | Surface checked | Invariant | Status | Upstream artifact |
2727
| --- | --- | --- | --- | --- | --- |
28-
| 1 | [OpenLIT](https://github.com/openlit/openlit) | token accounting | token subset (reasoning ⊂ output) | **FAIL → fixed** | [PR #1476 merged](https://github.com/openlit/openlit/pull/1476) |
28+
| 1 | [OpenLIT](https://github.com/openlit/openlit) | token accounting | token subset (reasoning ⊂ output) | **subset attribute + invariant merged** | [PR #1476 merged](https://github.com/openlit/openlit/pull/1476) |
2929
| 2 | [Urusilla](https://github.com/jaden3824/urusilla) | operation aggregation (checked AgentMeasure itself) | execution / reconciliation / operation grain | **3 FAILs → fixed** | vectors [001](../conformance/vectors/external/urusilla-001/) · [002](../conformance/vectors/external/urusilla-002/) · issues [#8](https://github.com/roy-tong/AgentMeasure/issues/8) [#9](https://github.com/roy-tong/AgentMeasure/issues/9) [#12](https://github.com/roy-tong/AgentMeasure/issues/12) · CI integration [PR jaden3824/urusilla#15](https://github.com/jaden3824/urusilla/pull/15) |
3030
| 3 | [pydantic-ai](https://github.com/pydantic/pydantic-ai) | OTel usage attributes | token subset emission | **intended / consumer-contract gap** | [issue #7975](https://github.com/pydantic/pydantic-ai/issues/7975) — emission confirmed intended; the consumer subset contract is unstated; routing to semconv |
3131
| 4 | [LiteLLM](https://github.com/BerriAI/litellm) | cache-hit usage logging | cache accounting | **confirmed by third party** | [issue #39057](https://github.com/BerriAI/litellm/issues/39057) — independent dev confirmed the ambiguity changes budget enforcement, not just reports |
@@ -40,6 +40,15 @@ This sprint asks each project one question:
4040
| 14 | [Phoenix](https://github.com/Arize-ai/phoenix) | cost attribution | total-only span classification | reviewing | [issue #15840](https://github.com/Arize-ai/phoenix/issues/15840) |
4141
| 12 | [Langfuse](https://github.com/langfuse/langfuse) | OTel vs REST ingestion | cache normalization | **current paths normalized; residual scope unverified** | [issue #16884 correction](https://github.com/langfuse/langfuse/issues/16884#issuecomment-5502836090) — the original 2.3× claim used stale line references and was withdrawn |
4242

43+
| 15 | [Weave](https://github.com/wandb/weave) | usage aggregation | self+descendants double counting | reviewing | [issue #7831](https://github.com/wandb/weave/issues/7831) |
44+
| 16 | [OpenInference](https://github.com/Arize-ai/openinference) | openai instrumentation | retry invisible in single span | reviewing | [issue #3664](https://github.com/Arize-ai/openinference/issues/3664) |
45+
| 17 | [TruLens](https://github.com/truera/trulens) | leaderboard aggregation | avg masquerading as total; mixed currency sum | reviewing | [issue #2759](https://github.com/truera/trulens/issues/2759) |
46+
| 18 | [Helicone](https://github.com/Helicone/helicone) | cost calculation | accepted_prediction_tokens double count | reviewing | [issue #5805](https://github.com/Helicone/helicone/issues/5805) |
47+
| 19 | [Braintrust](https://github.com/braintrustdata/braintrust-sdk-python) | span idempotency | span_parents skip on merge | reviewing | (drafted, template blocked) |
48+
| 20 | [LiteLLM](https://github.com/BerriAI/litellm) | mid-stream fallback | partial usage loss asymmetry | reviewing | [issue #39462](https://github.com/BerriAI/litellm/issues/39462) |
49+
| 21 | [AgentOps](https://github.com/AgentOps-AI/agentops) | semconv naming | old prompt_tokens vs input_tokens | reviewing | [issue #1447](https://github.com/AgentOps-AI/agentops/issues/1447) |
50+
| 22 | [OpenLLMetry](https://github.com/traceloop/openllmetry) | anthropic reasoning | reasoning subset not emitted | reviewing | [issue #4458](https://github.com/traceloop/openllmetry/issues/4458) |
51+
4352
*(Rows update as checks complete. Status meanings: checking = audit in
4453
progress; reviewing = upstream issue open; discussing = public thread active;
4554
PASS/FAIL/UNPROVABLE = invariant verdict recorded; fixed = upstream accepted
@@ -56,14 +65,6 @@ a change.)*
5665
| cost preservation | does grouping remove or duplicate real attempt cost? |
5766
| evidence boundary | are returned / available / influential conflated? |
5867
| eval repeatability | are n runs n measurements, or retries of one verdict? |
59-
| 15 | [Weave](https://github.com/wandb/weave) | usage aggregation | self+descendants double counting | reviewing | [issue #7831](https://github.com/wandb/weave/issues/7831) |
60-
| 16 | [OpenInference](https://github.com/Arize-ai/openinference) | openai instrumentation | retry invisible in single span | reviewing | [issue #3664](https://github.com/Arize-ai/openinference/issues/3664) |
61-
| 17 | [TruLens](https://github.com/truera/trulens) | leaderboard aggregation | avg masquerading as total; mixed currency sum | reviewing | [issue #2759](https://github.com/truera/trulens/issues/2759) |
62-
| 18 | [Helicone](https://github.com/Helicone/helicone) | cost calculation | accepted_prediction_tokens double count | reviewing | [issue #5805](https://github.com/Helicone/helicone/issues/5805) |
63-
| 19 | [Braintrust](https://github.com/braintrustdata/braintrust-sdk-python) | span idempotency | span_parents skip on merge | reviewing | (drafted, template blocked) |
64-
| 20 | [LiteLLM](https://github.com/BerriAI/litellm) | mid-stream fallback | partial usage loss asymmetry | reviewing | [issue #39462](https://github.com/BerriAI/litellm/issues/39462) |
65-
| 21 | [AgentOps](https://github.com/AgentOps-AI/agentops) | semconv naming | old prompt_tokens vs input_tokens | reviewing | [issue #1447](https://github.com/AgentOps-AI/agentops/issues/1447) |
66-
| 22 | [OpenLLMetry](https://github.com/traceloop/openllmetry) | anthropic reasoning | reasoning subset not emitted | reviewing | [issue #4458](https://github.com/traceloop/openllmetry/issues/4458) |
6768

6869
## Discipline
6970

@@ -78,5 +79,9 @@ a change.)*
7879

7980
## Follow along
8081

82+
[Try Healthcheck on local Codex logs](healthcheck-first-run.md) ·
83+
[Read the evidence casebook](measurement-casebook.md). Open issues and proposed
84+
PRs are work in progress, not accepted integrations or product adoption.
85+
8186
Repo → [conformance pack](../conformance/pack/README.md) (run the same checks
8287
on your own fixture) · X → [@elliwoodtong](https://x.com/elliwoodtong)

campaigns/healthcheck-first-run.md

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
# Try Healthcheck on your own Codex logs
2+
3+
We are looking for the first five non-author testers to help verify installation
4+
and whether the report is understandable. This is an engineering preview, not a
5+
claim that five testers have already completed it. No account, star, issue, or
6+
data upload is required to use it.
7+
8+
## Run
9+
10+
Requires Python 3.9+, Git and pipx. Installation downloads the package; analysis
11+
is local and has zero runtime dependencies. Supported samples currently come
12+
from Codex Desktop; standalone Codex CLI remains unverified and Claude Code is
13+
not supported.
14+
15+
```bash
16+
pipx install "git+https://github.com/roy-tong/AgentMeasure#subdirectory=healthcheck"
17+
agentmeasure demo
18+
agentmeasure check --json report.json
19+
```
20+
21+
Without pipx, install into a Python virtual environment using pip and the same
22+
Git URL. See [the full guide](../healthcheck/README.md).
23+
24+
Note separately how long installation and the first own-data report take.
25+
An empty or unsupported directory is useful feedback, but is not a successful
26+
own-data run. The demo is synthetic and never counts as an own-data run.
27+
28+
Try answering: **What did the report establish, and what would you do next?**
29+
Finding no issue can be useful too, provided coverage supports that conclusion.
30+
These are log checks, not a verdict on overall agent quality or task success.
31+
32+
## Optional feedback, with a preview
33+
34+
The HTML report, full `report.json`, and snapshots are personal artifacts. Do
35+
not attach them to a public issue: they may contain local paths and identifiers.
36+
37+
```bash
38+
agentmeasure share report.json # preview; writes nothing
39+
agentmeasure share report.json --out summary.md # export aggregate summary
40+
```
41+
42+
Open `summary.md` yourself before sharing. It contains aggregate counts, without
43+
prompts, commands, paths, project names, or session IDs. You can also omit the
44+
summary and describe only the installation problem or confusing result.
45+
46+
[**Open a first-run feedback issue**](https://github.com/roy-tong/AgentMeasure/issues/new?template=6-healthcheck-first-run.yml)
47+
48+
Please include OS, Python and tool version, whether the data is your own or the
49+
demo, and what was useful or blocked you. How you first found us and what made
50+
you try it are optional, separate questions. Feedback is not an endorsement and
51+
opening an issue does not automatically count as successful use.
52+
53+
## Come back after a change
54+
55+
```bash
56+
agentmeasure check --save-snapshot before.json
57+
# Make an actual change and run your agent again.
58+
agentmeasure check --save-snapshot after.json
59+
agentmeasure compare before.json after.json
60+
```
61+
62+
Describe the change and whether the comparison informed a decision. Different
63+
windows or workloads limit comparisons; metric deltas alone do not prove the
64+
change caused an improvement. Keep the snapshots local.

campaigns/measurement-casebook.md

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
# Measurement contributions with inspectable evidence
2+
3+
These are engineering contributions and counterexamples, not product adoption
4+
claims or endorsements. Each case links to its public source and states what
5+
the evidence does not establish.
6+
7+
## Exposing reasoning tokens without adding them twice
8+
9+
[OpenLIT PR #1476](https://github.com/openlit/openlit/pull/1476) was merged on
10+
2026-08-26. The Python/OpenAI change exposes reasoning output tokens for chat
11+
and Responses paths while preserving input/output as the token-usage metric's
12+
categories. The subset invariant is explicit: with output 1,000 and reasoning
13+
700, output usage remains 1,000, not 1,700.
14+
15+
That is a contribution to telemetry and regression protection. It does not
16+
show that OpenLIT adopted AgentMeasure Healthcheck, and does not establish that
17+
every previous OpenLIT path double-counted output.
18+
19+
## An external fixture found defects in our own checker
20+
21+
Urusilla's project-authored synthetic fixtures uncovered our validator's
22+
`oneOf` sibling-constraint gap and declared-operation reconciliation gap:
23+
[issue #8](https://github.com/roy-tong/AgentMeasure/issues/8) and
24+
[issue #9](https://github.com/roy-tong/AgentMeasure/issues/9).
25+
The [first vector](../conformance/vectors/external/urusilla-001/) became a
26+
regression fixture. A [second vector](../conformance/vectors/external/urusilla-002/)
27+
exercised a different operation-grain boundary, tracked in
28+
[issue #12](https://github.com/roy-tong/AgentMeasure/issues/12).
29+
30+
The lesson is useful even if you never install AgentMeasure: preserve attempt
31+
costs while checking declared operation summaries against their underlying
32+
attempts. A successful synthetic fixture is not production usage or a live
33+
provider-cost observation.
34+
35+
[Urusilla PR #15](https://github.com/jaden3824/urusilla/pull/15) proposes running
36+
the generic conformance checks in CI. As checked on 2026-09-06, it is open;
37+
review fixes have been pushed, but upstream workflow approval and merging are
38+
still pending. It complements Urusilla's fixture-specific validators rather
39+
than replacing them.
40+
41+
## Try the local product or contribute a bounded example
42+
43+
For Codex Desktop logs, [try Healthcheck](healthcheck-first-run.md). For generic
44+
FMT-002 event fixtures, use the [conformance pack](../conformance/pack/README.md).
45+
These are different input paths; Healthcheck does not require converting your
46+
logs into FMT-002.
47+
48+
Useful contributions include a minimal synthetic parsing counterexample, a
49+
repeat-run snapshot consumer, or a documentation correction with a versioned
50+
source. Start from a real question and a small reproducer. Do not share private
51+
logs or infer that a missing field means zero. See the
52+
[campaign tracker](30-projects-30-days.md) for existing work before duplicating it.

0 commit comments

Comments
 (0)