delivery-friction-analyzer 0.16.2 → 0.16.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +14 -14
- package/docs/contracts/target-repository.md +3 -3
- package/docs/reference/github-data-inventory.md +1 -1
- package/docs/reference/release-automation.md +1 -1
- package/package.json +1 -1
- package/release-log.md +8 -0
- package/src/cli/analyze-github.js +1 -1
- package/src/contracts/target-repository.js +1 -1
package/README.md
CHANGED
|
@@ -21,36 +21,36 @@ For public repositories, ordinary read access is usually enough. Private reposit
|
|
|
21
21
|
|
|
22
22
|
## Quickstart
|
|
23
23
|
|
|
24
|
-
###
|
|
24
|
+
### Guided setup
|
|
25
25
|
|
|
26
|
-
From this repository, install dependencies and
|
|
26
|
+
From this repository, install dependencies and let interactive setup create or confirm the repository profile for a GitHub repository you want to measure:
|
|
27
27
|
|
|
28
28
|
```sh
|
|
29
29
|
npm install
|
|
30
30
|
npm run analyze:github -- \
|
|
31
|
-
--repo
|
|
31
|
+
--repo owner/name \
|
|
32
32
|
--limit 30 \
|
|
33
|
-
--profile
|
|
34
|
-
--out reports/
|
|
33
|
+
--profile profiles/owner-name.json \
|
|
34
|
+
--out reports/owner-name \
|
|
35
|
+
--interactive \
|
|
36
|
+
--dry-run
|
|
35
37
|
```
|
|
36
38
|
|
|
37
|
-
|
|
39
|
+
If the profile path does not exist, interactive setup can create a minimal `repository-profile.v1` profile. `--dry-run` validates repository access, profile JSON, output directory writability, and a small sample of GitHub API coverage without writing the full report bundle. When the profile looks right, rerun the command without `--dry-run`.
|
|
38
40
|
|
|
39
|
-
###
|
|
41
|
+
### Run the analysis
|
|
40
42
|
|
|
41
|
-
|
|
43
|
+
After you have a repository profile, run the analyzer against the target repository:
|
|
42
44
|
|
|
43
45
|
```sh
|
|
44
46
|
npm run analyze:github -- \
|
|
45
|
-
--interactive \
|
|
46
47
|
--repo owner/name \
|
|
47
48
|
--limit 30 \
|
|
48
49
|
--profile profiles/owner-name.json \
|
|
49
|
-
--out reports/owner-name
|
|
50
|
-
--dry-run
|
|
50
|
+
--out reports/owner-name
|
|
51
51
|
```
|
|
52
52
|
|
|
53
|
-
|
|
53
|
+
Open `reports/owner-name/friction-report.md` first. It is the main human-readable report. Use the JSON and CSV files when you want to audit a finding, compare PRs, or build follow-up analysis.
|
|
54
54
|
|
|
55
55
|
To run the CLI from another project with the npm package, pass the same choices as explicit flags:
|
|
56
56
|
|
|
@@ -78,7 +78,7 @@ Profiles can define:
|
|
|
78
78
|
|
|
79
79
|
For a new repository, the easiest path is the guided `--interactive --dry-run` command in Quickstart. If the profile path does not exist, interactive setup asks whether to create it, then writes a minimal `repository-profile.v1` profile with user-provided workflow context and optional release PR title rules. It may create the output directory and briefly write then remove a temporary probe file to confirm writability. When interactive setup saves or generates a profile during a dry run, the completion output prints the saved profile path so you can inspect and edit it before a full run.
|
|
80
80
|
|
|
81
|
-
Use `
|
|
81
|
+
Use `docs/reference/repository-profile.md` and `schemas/repository-profile.schema.json` when you prefer to create a profile by hand. Existing profiles and fixtures in this repository are internal validation examples; copy them only if their repository-specific assumptions match your target.
|
|
82
82
|
|
|
83
83
|
## Outputs
|
|
84
84
|
|
|
@@ -163,7 +163,7 @@ The current product focus is a maintainer workflow:
|
|
|
163
163
|
|
|
164
164
|
The product should eventually combine GitHub delivery friction with token and model usage, but GitHub-only analytics remain the active validation surface.
|
|
165
165
|
|
|
166
|
-
`hannasdev/mcp-writing` remains
|
|
166
|
+
`hannasdev/mcp-writing` remains an internal validation target and fixture source, not a public tutorial path or product-specific scope.
|
|
167
167
|
|
|
168
168
|
The existing metrics-summary-only report command remains available for fixture and advanced workflows:
|
|
169
169
|
|
|
@@ -11,15 +11,15 @@ The local analyzer accepts a target repository and a pull request sample size. T
|
|
|
11
11
|
- `defaultBranch`: expected default branch for merge-base and branch lookup context.
|
|
12
12
|
- `visibility`: `public`, `private`, or `unknown`.
|
|
13
13
|
- `analysisPullRequestLimit`: latest merged pull request count from 1 to 100, supplied by the live CLI as `--limit`.
|
|
14
|
-
- `isValidationTarget`: optional flag for fixture-source repositories such as `hannasdev/mcp-writing`.
|
|
14
|
+
- `isValidationTarget`: optional metadata flag for internal validation or fixture-source repositories such as `hannasdev/mcp-writing`. It does not bypass target repository validation.
|
|
15
15
|
|
|
16
16
|
Schema: `schemas/target-repository.schema.json`. Live analysis selection is latest-N merged pull requests, not a rolling day window.
|
|
17
17
|
|
|
18
18
|
## Product Repository Separation
|
|
19
19
|
|
|
20
|
-
The validator rejects a target repository that exactly matches the configured product repository. For this repository, the product repository is `hannasdev/delivery-friction-analyzer`;
|
|
20
|
+
The validator rejects a target repository that exactly matches the configured product repository. For this repository, the product repository is `hannasdev/delivery-friction-analyzer`; `hannasdev/mcp-writing` is an internal validation target and fixture source.
|
|
21
21
|
|
|
22
|
-
Live GitHub analysis enforces this separation before GitHub collection starts. If `--repo` names this tool's product repository, the command fails before provider calls, tells you to choose the repository you want to measure with `--repo owner/name`, and confirms that no GitHub data was collected. The product repository identity is repo-local implementation configuration, not a public CLI option.
|
|
22
|
+
Live GitHub analysis enforces this separation before GitHub collection starts. If `--repo` names this tool's product repository, the command fails before provider calls, explains that the guard prevents accidental self-analysis during normal live runs rather than protecting already readable GitHub data, tells you to choose the repository you want to measure with `--repo owner/name`, and confirms that no GitHub data was collected. `--validation-target` only marks output metadata and does not bypass this guard. The product repository identity is repo-local implementation configuration, not a public CLI option.
|
|
23
23
|
|
|
24
24
|
## Degraded Behavior
|
|
25
25
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# GitHub Data Inventory
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Internal validation inventory was checked against `hannasdev/mcp-writing` on 2026-06-08 with `gh` authenticated as `hannasdev`. This repository is fixture and calibration context, not the public tutorial target.
|
|
4
4
|
|
|
5
5
|
## API Fields
|
|
6
6
|
|
|
@@ -9,7 +9,7 @@ The npm package allowlist includes:
|
|
|
9
9
|
- runtime source in `src`;
|
|
10
10
|
- JSON schemas in `schemas`;
|
|
11
11
|
- public contract and reference docs in `docs/contracts` and `docs/reference`;
|
|
12
|
-
- the
|
|
12
|
+
- the internal validation repository profile at `fixtures/github/mcp-writing/profile.json`;
|
|
13
13
|
- `LICENSE`;
|
|
14
14
|
- `README.md`;
|
|
15
15
|
- `release-log.md`.
|
package/package.json
CHANGED
package/release-log.md
CHANGED
|
@@ -2,6 +2,14 @@
|
|
|
2
2
|
|
|
3
3
|
## Unreleased
|
|
4
4
|
|
|
5
|
+
### 2026-06-23 — Tutorial Target Guidance
|
|
6
|
+
|
|
7
|
+
- What changed: Public quickstart guidance no longer depends on `hannasdev/mcp-writing`, and product-repository rejection plus `--validation-target` help now make the analysis boundary clearer.
|
|
8
|
+
- Why it matters: First-time users and maintainers get a clearer path for learning the CLI without confusing internal validation history, product-repository guardrails, or validation-target metadata for an override.
|
|
9
|
+
- Who is affected: Users running the CLI for the first time and maintainers reviewing first-run documentation or help text.
|
|
10
|
+
- Action needed: None.
|
|
11
|
+
- PR: #59
|
|
12
|
+
|
|
5
13
|
### 2026-06-21 — Done Initiative Hygiene Guard
|
|
6
14
|
|
|
7
15
|
- What changed: `npm test` now enforces completed initiative documentation hygiene, and `AGENTS.md` documents how shipped, deferred, future-decision, backlog-linked, and intentionally omitted items should be recorded in done initiative docs.
|
|
@@ -125,7 +125,7 @@ Options:
|
|
|
125
125
|
--dry-run Validate inputs and sample GitHub coverage without writing artifacts.
|
|
126
126
|
--no-dry-run Disable dry-run mode when a preset enabled it.
|
|
127
127
|
--metadata-only Alias for --dry-run.
|
|
128
|
-
--validation-target Mark
|
|
128
|
+
--validation-target Mark output metadata as an internal validation run; does not bypass target validation.
|
|
129
129
|
--no-validation-target Disable validation-target mode when a preset enabled it.
|
|
130
130
|
--exclude-pr-class <cls> Exclude a PR class from normalized, metrics, report, methodology, and CSV artifacts. Repeat or comma-separate values.
|
|
131
131
|
--csv Enable curated CSV evidence exports when a preset disabled them.
|
|
@@ -99,5 +99,5 @@ export function productRepositoryTargetError(input) {
|
|
|
99
99
|
const repository = typeof input?.owner === "string" && typeof input?.name === "string"
|
|
100
100
|
? `${input.owner}/${input.name}`
|
|
101
101
|
: "the requested repository";
|
|
102
|
-
return `Cannot analyze ${repository} because it is this tool's product repository
|
|
102
|
+
return `Cannot analyze ${repository} because it is this tool's product repository. The guard prevents accidental self-analysis during normal live runs; it is not a data-security boundary. Choose a different repository with --repo owner/name. No GitHub data was collected.`;
|
|
103
103
|
}
|