grift-cli 0.7.2__tar.gz → 0.9.0__tar.gz
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.
- grift_cli-0.9.0/.github/ISSUE_TEMPLATE/bug_report.yml +79 -0
- grift_cli-0.9.0/.github/ISSUE_TEMPLATE/config.yml +11 -0
- grift_cli-0.9.0/.github/ISSUE_TEMPLATE/feature_request.yml +52 -0
- grift_cli-0.9.0/.github/ISSUE_TEMPLATE/question.yml +52 -0
- grift_cli-0.9.0/.github/PULL_REQUEST_TEMPLATE.md +66 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/CHANGELOG.md +238 -0
- grift_cli-0.9.0/PKG-INFO +195 -0
- grift_cli-0.9.0/README.en.md +166 -0
- grift_cli-0.9.0/README.md +144 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/action.yml +1 -1
- grift_cli-0.9.0/benchmarks/v060/golden/expected/actor-partition.json +1 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/benchmarks/v060/golden/manifest.json +1 -1
- {grift_cli-0.7.2 → grift_cli-0.9.0}/benchmarks/v060/golden/migrations.json +1 -1
- {grift_cli-0.7.2 → grift_cli-0.9.0}/docs/REQUIREMENTS-v060.md +2 -0
- grift_cli-0.9.0/docs/adr/ADR-0001-v08-no-volume-ordering.md +116 -0
- grift_cli-0.9.0/docs/adr/ADR-0002-trait-profile.md +151 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/docs/alignment-schema.md +29 -7
- grift_cli-0.9.0/docs/design/trait-profile-20261026/README.md +33 -0
- grift_cli-0.9.0/docs/design/trait-profile-20261026/inputs/brief-a.toml +21 -0
- grift_cli-0.9.0/docs/design/trait-profile-20261026/inputs/brief-b.toml +17 -0
- grift_cli-0.9.0/docs/design/trait-profile-20261026/inputs/identity-a.toml +8 -0
- grift_cli-0.9.0/docs/design/trait-profile-20261026/inputs/identity-b.toml +8 -0
- grift_cli-0.9.0/docs/design/trait-profile-20261026/inputs/p1-payments.toml +16 -0
- grift_cli-0.9.0/docs/design/trait-profile-20261026/inputs/p2-storefront.toml +18 -0
- grift_cli-0.9.0/docs/design/trait-profile-20261026/outputs-080/actor-a.md +139 -0
- grift_cli-0.9.0/docs/design/trait-profile-20261026/outputs-080/actor-b.md +139 -0
- grift_cli-0.9.0/docs/design/trait-profile-20261026/outputs-080/align-a-p1.md +184 -0
- grift_cli-0.9.0/docs/design/trait-profile-20261026/outputs-080/align-a-p2.md +155 -0
- grift_cli-0.9.0/docs/design/trait-profile-20261026/outputs-080/align-b-p1.md +184 -0
- grift_cli-0.9.0/docs/design/trait-profile-20261026/outputs-080/align-b-p2.md +155 -0
- grift_cli-0.9.0/docs/design/trait-profile-20261026/outputs-080/project-p1.md +131 -0
- grift_cli-0.9.0/docs/design/trait-profile-20261026/outputs-080/project-p2.md +131 -0
- grift_cli-0.9.0/docs/design/trait-profile-20261026/samples/align-a-p1.md +49 -0
- grift_cli-0.9.0/docs/design/trait-profile-20261026/samples/align-a-p2.md +48 -0
- grift_cli-0.9.0/docs/design/trait-profile-20261026/samples/align-b-p1.md +56 -0
- grift_cli-0.9.0/docs/design/trait-profile-20261026/samples/align-b-p2.md +46 -0
- grift_cli-0.9.0/docs/design/trait-profile-20261026/samples/candidate-a.md +61 -0
- grift_cli-0.9.0/docs/design/trait-profile-20261026/samples/candidate-b.md +63 -0
- grift_cli-0.9.0/docs/design/trait-profile-20261026/samples/project-p1.md +52 -0
- grift_cli-0.9.0/docs/design/trait-profile-20261026/samples/project-p2.md +51 -0
- grift_cli-0.9.0/docs/design/trait-profile-20261026/tools/make_synth.py +354 -0
- grift_cli-0.9.0/docs/design/trait-profile-20261026/tools/run_080.sh +50 -0
- grift_cli-0.9.0/docs/design/trait-profile-20261026.md +554 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/docs/en/metrics-guide.md +29 -4
- grift_cli-0.9.0/docs/en/migration-v090.md +177 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/docs/en/norms.md +19 -2
- grift_cli-0.9.0/docs/en/trait-profile.md +375 -0
- grift_cli-0.7.2/README.en.md → grift_cli-0.9.0/docs/en/usage.md +99 -218
- grift_cli-0.9.0/docs/en/validation.md +52 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/docs/metrics-guide.md +42 -5
- grift_cli-0.9.0/docs/migration-v080.md +648 -0
- grift_cli-0.9.0/docs/migration-v090.md +863 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/docs/norms.md +38 -4
- {grift_cli-0.7.2 → grift_cli-0.9.0}/docs/report-schema.md +1 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/docs/report-v2.md +6 -2
- grift_cli-0.9.0/docs/trait-profile.md +375 -0
- grift_cli-0.9.0/docs/usage.md +312 -0
- grift_cli-0.9.0/docs/validation.md +51 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/pyproject.toml +10 -3
- {grift_cli-0.7.2 → grift_cli-0.9.0}/scripts/v060_scenario_matrix.py +8 -5
- {grift_cli-0.7.2 → grift_cli-0.9.0}/scripts/v070_benchmark.py +51 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_cli/__main__.py +10 -13
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_cli/subject.py +5 -27
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/actor_artifacts.py +75 -4
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/actor_basis.py +23 -1
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/actor_directory.py +8 -1
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/alignment.py +176 -38
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/analyze.py +68 -27
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/analyze_v2.py +13 -1
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/attribution.py +3 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/contribute.py +4 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/report.py +1 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/report_v2.py +80 -345
- grift_cli-0.9.0/src/tep_core/report_v2_observed.py +263 -0
- grift_cli-0.9.0/src/tep_core/report_v2_text.py +97 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/rhythm.py +7 -1
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/schema_v2.py +7 -1
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/schemas/v060-contracts.schema.json +10 -1
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/tendency.py +42 -12
- grift_cli-0.9.0/src/tep_core/trait_alignment.py +264 -0
- grift_cli-0.9.0/src/tep_core/trait_evidence.py +178 -0
- grift_cli-0.9.0/src/tep_core/trait_profile.py +378 -0
- grift_cli-0.9.0/src/tep_core/trait_sections.py +254 -0
- grift_cli-0.9.0/src/tep_core/trait_tables.py +445 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/v2_constants.py +43 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/verify.py +14 -4
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/version.py +2 -2
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/fixtures/v060/run_p0_falsify.py +1 -1
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_discriminant_claims.py +17 -9
- grift_cli-0.9.0/tests/test_readme_entry.py +164 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_v058_gates.py +47 -2
- grift_cli-0.9.0/tests/test_v060_docs_parity.py +283 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_v060_observed_compare.py +30 -9
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_v060_release_consistency.py +27 -14
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_v060_scenario_matrix.py +62 -8
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_v070_benchmark.py +50 -0
- grift_cli-0.9.0/tests/test_v080_actor_index_order.py +350 -0
- grift_cli-0.9.0/tests/test_v080_inflation_limitations.py +214 -0
- grift_cli-0.9.0/tests/test_v080_selectivity_notice.py +223 -0
- grift_cli-0.9.0/tests/test_v090_alignment_consent.py +186 -0
- grift_cli-0.9.0/tests/test_v090_history_wording.py +56 -0
- grift_cli-0.9.0/tests/test_v090_markdown_without_strength.py +139 -0
- grift_cli-0.9.0/tests/test_v090_namesake_cluster.py +74 -0
- grift_cli-0.9.0/tests/test_v090_observation_date.py +62 -0
- grift_cli-0.9.0/tests/test_v090_role_profile_as_of.py +130 -0
- grift_cli-0.9.0/tests/test_v090_scenario_window_utc.py +74 -0
- grift_cli-0.9.0/tests/test_v090_site_names.py +195 -0
- grift_cli-0.9.0/tests/test_v090_trait_profile.py +613 -0
- grift_cli-0.9.0/tests/test_v090_trait_tables.py +194 -0
- grift_cli-0.9.0/tests/test_v090_trait_units.py +1004 -0
- grift_cli-0.9.0/tests/test_v090_v080_discrepancies.py +403 -0
- grift_cli-0.7.2/PKG-INFO +0 -428
- grift_cli-0.7.2/README.md +0 -404
- grift_cli-0.7.2/benchmarks/v060/golden/expected/actor-partition.json +0 -1
- grift_cli-0.7.2/tests/test_v060_docs_parity.py +0 -108
- {grift_cli-0.7.2 → grift_cli-0.9.0}/.github/workflows/ci.yml +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/.github/workflows/kpi-monthly.yml +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/.github/workflows/publish.yml +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/.github/workflows/v060-provider-live.yml +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/.gitignore +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/LICENSE +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/benchmarks/v060/IMPLEMENTATION-AGENT-INSTRUCTIONS.md +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/benchmarks/v060/README.md +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/benchmarks/v060/data/alignment_cases.jsonl +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/benchmarks/v060/data/gharchive_daily_summary.csv +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/benchmarks/v060/data/gharchive_events_2024-01-15_to_21.ndjson +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/benchmarks/v060/data/gharchive_repository_summary.csv +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/benchmarks/v060/data/independent_repo_actor_audit_2026-08-30.json +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/benchmarks/v060/data/metric_catalog.csv +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/benchmarks/v060/data/role_ground_truth_sample.csv +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/benchmarks/v060/data/role_label_counts.csv +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/benchmarks/v060/data/tracker_lifecycle_fixture.csv +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/benchmarks/v060/expected/tracker_fixture_expected.json +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/benchmarks/v060/golden/fixtures/actor-partition-repo.json +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/benchmarks/v060/quality-report.md +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/benchmarks/v060/schemas/benchmark-manifest.schema.json +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/benchmarks/v060/schemas/event-observation.schema.json +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/benchmarks/v060/schemas/role-validation.schema.json +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/benchmarks/v060/sources.json +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/corpus/AD-PILOT-20260822.md +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/corpus/DISCRIMINANT-v2026.09.md +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/corpus/DISCRIMINANT-v2026.11.md +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/corpus/ad-pilot.json +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/corpus/manifest.toml +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/corpus/pins-v2026.09.toml +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/corpus/pins-v2026.11.toml +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/corpus/v2026.09/distributions.json +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/corpus/v2026.11/distributions.json +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/docs/CORPUS-CANDIDATES-v2026.11-20260822.md +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/docs/EVIDENCE-v056-smoke-raw.log +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/docs/EVIDENCE-v058-smoke-raw.log +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/docs/EVIDENCE-v058b-smoke-raw.log +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/docs/EVIDENCE-v059-smoke-raw.log +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/docs/EVIDENCE-v059b-smoke-raw.log +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/docs/PLAN-v060-20260825.md +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/docs/READERS-GUIDE-draft-20260822.md +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/docs/RESEARCH-v060.md +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/docs/V060-CLOSURE-LEDGER-20260831.md +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/docs/contribute-intake-design-20260822.md +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/docs/corpus-protocol.md +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/docs/coverage-map.md +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/docs/en/corpus-protocol.md +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/docs/en/coverage-map.md +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/docs/en/export-schema.md +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/docs/en/identity-schema.md +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/docs/en/persona-answers.md +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/docs/en/report-schema.md +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/docs/evidence/v060/attest-portfolio.md +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/docs/evidence/v060/grift-2055-audit.md +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/docs/export-schema.md +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/docs/identity-schema.md +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/docs/input-export-schema.md +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/docs/migration-v060.md +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/docs/migration-v070.md +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/docs/migration-v071.md +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/docs/migration-v072.md +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/docs/persona-answers.md +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/docs/project-schema.md +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/docs/rereview-checklist-template.md +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/golden/README.md +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/golden/coverage.md +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/golden/expected/G1-click.json +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/golden/expected/G10-scvi-tools.json +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/golden/expected/G11-kilo.json +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/golden/expected/G12-httpx.json +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/golden/expected/G13-voicevox.json +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/golden/expected/G2-gitignore.json +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/golden/expected/G3-spoon-knife.json +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/golden/expected/G4-express.json +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/golden/expected/G5-typer.json +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/golden/expected/G6-claude-code.json +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/golden/expected/G7-axios.json +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/golden/expected/G8-co.json +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/golden/expected/G9-pyscript.json +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/golden/identity/G1-click.toml +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/golden/identity/example.toml +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/golden/pins.toml +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/scripts/action_contract_guard.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/scripts/admission_v2026_11.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/scripts/build_dist_v2026_11.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/scripts/build_distributions.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/scripts/build_library_prevalence.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/scripts/check_forbidden_vocab.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/scripts/corpus_ad_pilot.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/scripts/corpus_run.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/scripts/discriminant_v2026.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/scripts/discriminant_v2026_11.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/scripts/gen_coverage_table.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/scripts/gen_golden_expected.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/scripts/hygiene_grep.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/scripts/intake_contract_parity.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/scripts/package_smoke.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/scripts/v060_blind_pilot.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/scripts/v060_golden.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/scripts/v060_golden_baseline.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/scripts/v060_provider_live_gate.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_cli/__init__.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_cli/benchmark_cmd.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_cli/options.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_cli/output.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/__init__.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/activity.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/ai_identity.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/archive_events.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/attest.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/benchmark.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/benchmark_assets/v060/data/alignment_cases.jsonl +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/benchmark_assets/v060/data/gharchive_daily_summary.csv +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/benchmark_assets/v060/data/gharchive_events_2024-01-15_to_21.ndjson +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/benchmark_assets/v060/data/gharchive_repository_summary.csv +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/benchmark_assets/v060/data/independent_repo_actor_audit_2026-08-30.json +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/benchmark_assets/v060/data/metric_catalog.csv +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/benchmark_assets/v060/data/role_ground_truth_sample.csv +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/benchmark_assets/v060/data/role_label_counts.csv +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/benchmark_assets/v060/data/tracker_lifecycle_fixture.csv +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/benchmark_assets/v060/expected/tracker_fixture_expected.json +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/benchmark_assets/v060/schemas/benchmark-manifest.schema.json +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/benchmark_assets/v060/schemas/event-observation.schema.json +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/benchmark_assets/v060/schemas/role-validation.schema.json +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/benchmark_assets/v060/sources.json +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/cochange.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/complementarity.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/context_profile.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/contribution_v2.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/coordination.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/core_period.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/data/prevalence/v2026.09/library_prevalence.json +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/data/v2026.09/distributions.json +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/data/v2026.11/distributions.json +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/dates.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/dependency_manifest.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/digest.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/event_rhythm.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/experience.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/experience_collect.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/export.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/forge.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/forge_public.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/gitutil.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/identity.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/lineage.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/local_inputs.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/observation.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/origin.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/outcome.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/path_surface.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/paths.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/portfolio.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/prevalence.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/project.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/public_evidence.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/public_fetch.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/reference.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/revision.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/rework.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/role_lens.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/role_profile.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/role_validation.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/schema.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/schemas/__init__.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/scope.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/secrets_guard.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/secure_output.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/source_binding.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/surface_profile.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/survival.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/tagset.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/tests_observed.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/tracker.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/tracker_lifecycle.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/src/tep_core/verification_profile.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/conftest.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/coverage_matrix.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/fixtures/v060/forge.json +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/fixtures/v060/p0-results.json +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/fixtures/v060/project-declared.json +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/fixtures/v060/project-init.toml +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/fixtures/v060/project.toml +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/fixtures/v060/repo-smoke-head.json +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/fixtures/v060/tracker.json +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/git_fixture.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_action_contract.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_activity.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_benchmark_pack_v060.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_cli.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_cli_v060.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_cochange.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_context_profile.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_contribute.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_coverage.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_default_report_path.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_export.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_export_recipe.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_forbidden_vocab.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_gitutil.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_gloss_gates.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_golden.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_h5_swarm.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_hygiene.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_identity_validation.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_intake_contract_parity.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_intake_disclosure.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_lifecycle_v2.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_migration_v060.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_not_observed.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_origin.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_package_contract.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_persona_answers.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_publish_baseline_pin.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_release_gate.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_report.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_rework.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_schema.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_scope.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_shared_block.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_survival.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_ux_v057.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_v060_actor_account_source_binding_cli.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_v060_actor_artifacts.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_v060_actor_partition.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_v060_actor_public_directory.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_v060_alignment.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_v060_attest_core.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_v060_attest_input_binding.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_v060_attest_portfolio_cli.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_v060_binding_quality.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_v060_blind_pilot.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_v060_bound_export_observations.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_v060_complete.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_v060_contribute_atomic_consent.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_v060_contribution_profiles.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_v060_cross_repo.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_v060_determinism.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_v060_emit_robustness.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_v060_experience_collect.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_v060_experience_incomplete.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_v060_experience_product_cli.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_v060_experience_role.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_v060_forge_evidence.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_v060_golden_runner.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_v060_historical_exact_head.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_v060_identity_v2.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_v060_independent_audit.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_v060_inputs.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_v060_large_repo_degradation.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_v060_no_false_zero.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_v060_p0_runner.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_v060_portfolio_core.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_v060_provider_live_gate.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_v060_provider_live_workflow.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_v060_public_actor_presentation.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_v060_public_evidence_contract.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_v060_public_registry_export.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_v060_report_deep_schema.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_v060_report_strict_producer.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_v060_revision.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_v060_rhythm.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_v060_schema.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_v060_schema_contracts.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_v060_subject_source_binding_cli.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_v060_surfaces.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_v060_verify_fixed_revision.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_v060_verify_inferred_actor.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_v070_actor_time_phase.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_v070_align_share.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_v070_cli_surface.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_v070_complementarity.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_v070_dependency_attribution.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_v070_dependency_experience.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_v070_dependency_manifest.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_v070_history_incomplete.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_v070_intake_contract.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_v070_library_prevalence.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_v070_norms_link.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_v070_outcome.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_v070_project_min_share.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_v070_scale_denominator.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_v071_bot_accounts.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_v071_gate_failure_detail.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_v071_response_completeness.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_v072_empty_actor.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_verb_semantics.py +0 -0
- {grift_cli-0.7.2 → grift_cli-0.9.0}/tests/test_verify.py +0 -0
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
name: バグ報告 / Bug report
|
|
2
|
+
description: 期待と違う出力・終了コード・クラッシュ。An output, exit code or crash that differs from what you expected.
|
|
3
|
+
title: "fix: "
|
|
4
|
+
labels: ["bug"]
|
|
5
|
+
body:
|
|
6
|
+
- type: markdown
|
|
7
|
+
attributes:
|
|
8
|
+
value: |
|
|
9
|
+
観測値と期待値を分けて書いてください。再現に使う repo は「形」が分かれば十分です(公開 URL + SHA、または合成 repo を作るスクリプト)。
|
|
10
|
+
秘密情報・生メールアドレス・非公開 repo の履歴は貼らないでください。脆弱性は Issue ではなく [SECURITY.md](https://github.com/Cor-Incorporated/grift-cli/blob/main/SECURITY.md) の窓口へ。
|
|
11
|
+
|
|
12
|
+
Please separate what you observed from what you expected. For the repository, its *shape* is enough (public URL + SHA, or a script that builds a synthetic repo).
|
|
13
|
+
Do not paste secrets, raw email addresses or private history. Vulnerabilities go to [SECURITY.md](https://github.com/Cor-Incorporated/grift-cli/blob/main/SECURITY.md), not to an issue.
|
|
14
|
+
- type: textarea
|
|
15
|
+
id: command
|
|
16
|
+
attributes:
|
|
17
|
+
label: 実行したコマンド / Command you ran
|
|
18
|
+
description: フラグも含めてそのまま。As typed, including flags.
|
|
19
|
+
render: bash
|
|
20
|
+
placeholder: |
|
|
21
|
+
grift repo . --format json
|
|
22
|
+
validations:
|
|
23
|
+
required: true
|
|
24
|
+
- type: textarea
|
|
25
|
+
id: observed
|
|
26
|
+
attributes:
|
|
27
|
+
label: 観測値 / What you observed
|
|
28
|
+
description: 出力(必要な部分だけ)と終了コード。stderr があればそれも。Output (the relevant part), exit code, and stderr if any.
|
|
29
|
+
render: text
|
|
30
|
+
validations:
|
|
31
|
+
required: true
|
|
32
|
+
- type: textarea
|
|
33
|
+
id: expected
|
|
34
|
+
attributes:
|
|
35
|
+
label: 期待値 / What you expected
|
|
36
|
+
description: どの文書・help・過去の版からそう期待したかも書いてください。Say which document, help text or earlier version led you to expect it.
|
|
37
|
+
validations:
|
|
38
|
+
required: true
|
|
39
|
+
- type: dropdown
|
|
40
|
+
id: repo-shape
|
|
41
|
+
attributes:
|
|
42
|
+
label: 再現 repo の形 / Shape of the reproducing repository
|
|
43
|
+
options:
|
|
44
|
+
- 公開 repo(URL と SHA を下に書く)/ Public repository (URL + SHA below)
|
|
45
|
+
- 合成 repo(作るスクリプトを下に書く)/ Synthetic repository (script below)
|
|
46
|
+
- 非公開で共有できない(形だけ下に書く)/ Private, cannot share (describe the shape below)
|
|
47
|
+
- この grift-cli リポジトリ自身 / This grift-cli repository itself
|
|
48
|
+
validations:
|
|
49
|
+
required: true
|
|
50
|
+
- type: textarea
|
|
51
|
+
id: repo-detail
|
|
52
|
+
attributes:
|
|
53
|
+
label: 再現 repo の詳細 / Repository details
|
|
54
|
+
description: |
|
|
55
|
+
URL + SHA、または `git init` から始まる最小スクリプト。共有できないときは commit 数・著者数・merge の有無・shallow / promisor か・bot commit の有無・identity の有無を書いてください。
|
|
56
|
+
URL + SHA, or a minimal script starting at `git init`. If you cannot share it: number of commits and authors, merges or not, shallow / promisor or not, bot commits or not, identity file or not.
|
|
57
|
+
render: bash
|
|
58
|
+
- type: input
|
|
59
|
+
id: version
|
|
60
|
+
attributes:
|
|
61
|
+
label: バージョン / Version
|
|
62
|
+
description: "`grift --version` の出力。The output of `grift --version`."
|
|
63
|
+
placeholder: grift 0.7.2
|
|
64
|
+
validations:
|
|
65
|
+
required: true
|
|
66
|
+
- type: input
|
|
67
|
+
id: env
|
|
68
|
+
attributes:
|
|
69
|
+
label: 環境 / Environment
|
|
70
|
+
description: OS、Python の版、入れ方(pipx / pip / GitHub Action)。OS, Python version, how installed (pipx / pip / GitHub Action).
|
|
71
|
+
placeholder: macOS 15 / Python 3.12.9 / pipx
|
|
72
|
+
- type: checkboxes
|
|
73
|
+
id: hygiene
|
|
74
|
+
attributes:
|
|
75
|
+
label: 確認 / Checks
|
|
76
|
+
options:
|
|
77
|
+
- label: 秘密情報・生メールアドレス・非公開履歴を貼っていない / No secrets, raw email addresses or private history are pasted above
|
|
78
|
+
required: true
|
|
79
|
+
- label: 同じ内容の Issue が無いか検索した / I searched for an existing issue
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
blank_issues_enabled: false
|
|
2
|
+
contact_links:
|
|
3
|
+
- name: 脆弱性の報告 / Report a vulnerability
|
|
4
|
+
url: https://github.com/Cor-Incorporated/grift-cli/blob/main/SECURITY.md
|
|
5
|
+
about: 公開 Issue には書かず、SECURITY.md の窓口へ。Do not open a public issue; use the channel in SECURITY.md.
|
|
6
|
+
- name: 非公開の連絡(削除依頼など)/ Private contact (removal requests etc.)
|
|
7
|
+
url: https://cor-jp.com/contact/
|
|
8
|
+
about: golden identity の削除依頼など、公開したくない内容はこちら。For anything you do not want public, such as removal requests for golden identities.
|
|
9
|
+
- name: 利用規範(TEP 準拠の条件)/ Usage norms
|
|
10
|
+
url: https://github.com/Cor-Incorporated/grift-cli/blob/main/docs/norms.md
|
|
11
|
+
about: 「この使い方は TEP 準拠か」はまず 7 条を読んでから。Read the seven articles before asking whether a use is TEP-compliant.
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
name: 機能の提案 / Feature request
|
|
2
|
+
description: 新しい観測・フラグ・出力形式の提案。A new observation, flag or output format.
|
|
3
|
+
title: "feat: "
|
|
4
|
+
labels: ["enhancement"]
|
|
5
|
+
body:
|
|
6
|
+
- type: markdown
|
|
7
|
+
attributes:
|
|
8
|
+
value: |
|
|
9
|
+
grift は合成スコア・順位・推奨・合否を出しません([CONTRIBUTING.md](https://github.com/Cor-Incorporated/grift-cli/blob/main/CONTRIBUTING.md) §7、[docs/norms.md](https://github.com/Cor-Incorporated/grift-cli/blob/main/docs/norms.md))。
|
|
10
|
+
それに当たる提案は、どれだけ便利でも受けられないので、先に下のチェックを見てください。
|
|
11
|
+
|
|
12
|
+
grift never produces a composite score, rank, recommendation or pass/fail ([CONTRIBUTING.en.md](https://github.com/Cor-Incorporated/grift-cli/blob/main/CONTRIBUTING.en.md) §7, [docs/en/norms.md](https://github.com/Cor-Incorporated/grift-cli/blob/main/docs/en/norms.md)).
|
|
13
|
+
A proposal that amounts to one cannot be accepted however useful it is, so please look at the checklist below first.
|
|
14
|
+
- type: textarea
|
|
15
|
+
id: observed
|
|
16
|
+
attributes:
|
|
17
|
+
label: 今の出力で困っていること(観測値)/ What today's output does (observed)
|
|
18
|
+
description: 実際に実行したコマンドと、今返ってくるもの。The command you ran and what comes back today.
|
|
19
|
+
render: text
|
|
20
|
+
validations:
|
|
21
|
+
required: true
|
|
22
|
+
- type: textarea
|
|
23
|
+
id: expected
|
|
24
|
+
attributes:
|
|
25
|
+
label: 望む出力(期待値)/ What you want it to do (expected)
|
|
26
|
+
description: 可能なら report の JSON キー名や Markdown の文面の案まで。単位・分母・観測窓も。If you can, propose the JSON key, the Markdown wording, and its unit, denominator and window.
|
|
27
|
+
validations:
|
|
28
|
+
required: true
|
|
29
|
+
- type: textarea
|
|
30
|
+
id: repo-shape
|
|
31
|
+
attributes:
|
|
32
|
+
label: 違いが出る repo の形 / Shape of a repository where the difference shows
|
|
33
|
+
description: |
|
|
34
|
+
公開 repo の URL + SHA、または合成 repo を作るスクリプト。提案した観測が「観測できる repo」と「not_observed になる repo」の両方があると議論が速いです。
|
|
35
|
+
Public URL + SHA, or a script that builds a synthetic repo. One repo where the observation is possible and one where it must be `not_observed` speeds things up.
|
|
36
|
+
render: bash
|
|
37
|
+
- type: checkboxes
|
|
38
|
+
id: design
|
|
39
|
+
attributes:
|
|
40
|
+
label: 設計上の確認 / Design checks
|
|
41
|
+
options:
|
|
42
|
+
- label: 人を 1 つの数値・等級・順位に縮約しない / Does not reduce a person to one number, grade or rank
|
|
43
|
+
required: true
|
|
44
|
+
- label: 「膨らませ方」(形式的な操作で値が上がる経路)を一緒に書いた / I described how the value could be inflated by formal operations
|
|
45
|
+
required: true
|
|
46
|
+
- label: 母数 20 未満・履歴不完全のときに `not_observed` になる条件を書いた / I described when it becomes `not_observed` (population below 20, incomplete history)
|
|
47
|
+
- label: 新しい network 経路を必要としない。必要なら opt-in フラグ付き / Needs no new network path, or only behind an opt-in flag
|
|
48
|
+
- type: textarea
|
|
49
|
+
id: alternatives
|
|
50
|
+
attributes:
|
|
51
|
+
label: 代替案 / Alternatives
|
|
52
|
+
description: 既存のフラグや文書で代わりになるものを試したか。What existing flags or documents you tried instead.
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
name: 質問 / Question
|
|
2
|
+
description: 出力の読み方、使い方、文書の分かりにくさ。How to read an output, how to use a command, unclear documentation.
|
|
3
|
+
title: "question: "
|
|
4
|
+
labels: ["question"]
|
|
5
|
+
body:
|
|
6
|
+
- type: markdown
|
|
7
|
+
attributes:
|
|
8
|
+
value: |
|
|
9
|
+
先に見ると早いもの: [README](https://github.com/Cor-Incorporated/grift-cli/blob/main/README.md) の「試す」、[docs/metrics-guide.md](https://github.com/Cor-Incorporated/grift-cli/blob/main/docs/metrics-guide.md)(数値の読み方)、[docs/norms.md](https://github.com/Cor-Incorporated/grift-cli/blob/main/docs/norms.md)(利用規範)。
|
|
10
|
+
「文書を読んでも分からなかった」という報告は、それ自体が文書のバグなので歓迎です。
|
|
11
|
+
|
|
12
|
+
Worth a look first: the "Try it" section of the [README](https://github.com/Cor-Incorporated/grift-cli/blob/main/README.en.md), [docs/en/metrics-guide.md](https://github.com/Cor-Incorporated/grift-cli/blob/main/docs/en/metrics-guide.md) (how to read the numbers), [docs/en/norms.md](https://github.com/Cor-Incorporated/grift-cli/blob/main/docs/en/norms.md) (usage norms).
|
|
13
|
+
"I read the docs and still did not get it" is a documentation bug and welcome here.
|
|
14
|
+
- type: textarea
|
|
15
|
+
id: question
|
|
16
|
+
attributes:
|
|
17
|
+
label: 質問 / Question
|
|
18
|
+
validations:
|
|
19
|
+
required: true
|
|
20
|
+
- type: textarea
|
|
21
|
+
id: observed
|
|
22
|
+
attributes:
|
|
23
|
+
label: 見た出力(観測値)/ The output you saw (observed)
|
|
24
|
+
description: 実行したコマンドと、問題の部分。The command and the part of the output in question.
|
|
25
|
+
render: text
|
|
26
|
+
- type: textarea
|
|
27
|
+
id: expected
|
|
28
|
+
attributes:
|
|
29
|
+
label: そう思った理由(期待値)/ What you expected and why
|
|
30
|
+
description: どの文書や経験からそう期待したか。Which document or experience led you to expect something else.
|
|
31
|
+
- type: dropdown
|
|
32
|
+
id: repo-shape
|
|
33
|
+
attributes:
|
|
34
|
+
label: 見ていた repo の形 / Shape of the repository you were looking at
|
|
35
|
+
options:
|
|
36
|
+
- 公開 repo(URL と SHA を下に)/ Public repository (URL + SHA below)
|
|
37
|
+
- 自分の非公開 repo(形だけ下に)/ My private repository (shape below)
|
|
38
|
+
- まだ実行していない / Have not run it yet
|
|
39
|
+
- type: textarea
|
|
40
|
+
id: repo-detail
|
|
41
|
+
attributes:
|
|
42
|
+
label: repo の詳細 / Repository details
|
|
43
|
+
description: URL + SHA、または commit 数・著者数・merge / shallow / bot の有無。URL + SHA, or commits, authors, merges / shallow / bots.
|
|
44
|
+
- type: checkboxes
|
|
45
|
+
id: read
|
|
46
|
+
attributes:
|
|
47
|
+
label: 読んだもの / What you already read
|
|
48
|
+
options:
|
|
49
|
+
- label: README の「試す」/ The "Try it" section of the README
|
|
50
|
+
- label: docs/metrics-guide.md(数値の読み方)/ docs/en/metrics-guide.md
|
|
51
|
+
- label: docs/norms.md(利用規範)/ docs/en/norms.md
|
|
52
|
+
- label: CONTRIBUTING.md
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
1 PR = 1 意図。ブランチ名と PR タイトルの type(feat / fix / docs / refactor / chore / ci / test / perf)を一致させてください。
|
|
3
|
+
作法と禁止事項は CONTRIBUTING.md §6 / §7。英語版は CONTRIBUTING.en.md。
|
|
4
|
+
One PR, one intent. Branch name and PR title share a type. Etiquette and prohibitions: CONTRIBUTING.en.md §6 / §7.
|
|
5
|
+
-->
|
|
6
|
+
|
|
7
|
+
## 目的 / Purpose
|
|
8
|
+
|
|
9
|
+
<!-- この PR が変える 1 つのこと。関連 Issue があれば `Closes #N`。The one thing this PR changes. `Closes #N` if there is an issue. -->
|
|
10
|
+
|
|
11
|
+
## 変更の種類 / Kind of change
|
|
12
|
+
|
|
13
|
+
- [ ] docs(文書のみ。`src/` に触れない / documentation only, no `src/`)
|
|
14
|
+
- [ ] fix
|
|
15
|
+
- [ ] feat(テストを含む / ships with tests)
|
|
16
|
+
- [ ] refactor / chore / ci / test / perf
|
|
17
|
+
|
|
18
|
+
## 変更内容 / What changed
|
|
19
|
+
|
|
20
|
+
<!-- 箇条書きで。ファイルと理由。Bullets: file and why. -->
|
|
21
|
+
|
|
22
|
+
## 実行したテスト / Tests you ran
|
|
23
|
+
|
|
24
|
+
```text
|
|
25
|
+
python -m pytest tests -m "not golden" -q
|
|
26
|
+
# → passed / failed の件数をここに貼る。Paste the passed / failed counts here.
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## H5-E2E
|
|
30
|
+
|
|
31
|
+
<!--
|
|
32
|
+
実際に実行したコマンドと、その生出力の要約(20 文字以上)または安定したログ path。
|
|
33
|
+
実行環境を持たない変更(docs のみ)は `H5-E2E: none` の 1 行。
|
|
34
|
+
The command you actually ran and a summary of its raw output (20+ characters) or a stable log path.
|
|
35
|
+
For changes with no runtime (docs only), the single line `H5-E2E: none`.
|
|
36
|
+
-->
|
|
37
|
+
|
|
38
|
+
```text
|
|
39
|
+
H5-E2E: <command>
|
|
40
|
+
H5-E2E-OUT: <raw output summary or log path>
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## ADR-0001 の確認 G / R / B(`src/`・schema・norms に触れた PR は必須)/ ADR-0001 check (required when `src/`, a schema or the norms change)
|
|
44
|
+
|
|
45
|
+
<!-- 定義は CONTRIBUTING.md §6。該当しない欄は「該当なし」と書く。Definitions in CONTRIBUTING.en.md §6. Write "not applicable" where nothing qualifies. -->
|
|
46
|
+
|
|
47
|
+
- **G(Green)** 受入条件を満たすテストが通った / the acceptance test passes:
|
|
48
|
+
- **R(Red)** 片側だけ変えると落ちることを実測した(何を壊して何が落ちたか)/ one-sided change fails (what you broke, what failed):
|
|
49
|
+
- **B(Binding)** 宣言と実体を 1 つのテストで結んだ / declaration and enforcement tied by one test:
|
|
50
|
+
|
|
51
|
+
## 証跡ゲート / Evidence gates(`src/` に触れた PR のみ / only when `src/` changed)
|
|
52
|
+
|
|
53
|
+
<!-- CONTRIBUTING.md §5 の 4 本。赤になったものと、意図した出力変更かどうか。The four gates in CONTRIBUTING.en.md §5: which went red, and whether the output change is intended. -->
|
|
54
|
+
|
|
55
|
+
- [ ] #1 `evidence/v060/scenarios` — 緑 / 再生成した / 赤のまま(理由: )
|
|
56
|
+
- [ ] #2 `evidence/v060/scenarios-public` — 赤でも可。release で再束縛 / may stay red; re-bound at release
|
|
57
|
+
- [ ] #3 `evidence/v070/benchmark.json` — 緑 / 再生成した
|
|
58
|
+
- [ ] #4 `benchmarks/v060/golden` + `DEFINITION_VERSION` — 緑 / 上げた
|
|
59
|
+
|
|
60
|
+
## チェック / Checklist
|
|
61
|
+
|
|
62
|
+
- [ ] 合成スコア・順位・推奨・合否を出す出力やキーを足していない(`FORBIDDEN_VERDICT_KEYS`、`check_forbidden_vocab`)/ No score, rank, recommendation or pass/fail output or key
|
|
63
|
+
- [ ] 新しい network 経路は無い。あるなら opt-in フラグ付き / No new network path, or only behind an opt-in flag
|
|
64
|
+
- [ ] 生メールアドレス・個人を特定する値を出力・テスト fixture・文書に載せていない / No raw email or identifying value in output, fixtures or docs
|
|
65
|
+
- [ ] 文書を変えたなら日英両方(`README.md` ↔ `README.en.md`、`docs/*` ↔ `docs/en/*`)/ Docs changed in both languages
|
|
66
|
+
- [ ] 利用者に見える変更は `CHANGELOG.md` の `[Unreleased]` に 1 行 / One line under `[Unreleased]` for anything a user can see
|
|
@@ -4,6 +4,244 @@
|
|
|
4
4
|
|
|
5
5
|
タグ・PyPI・リポ public 化は本ファイルの記載対象外(人間ゲート)。
|
|
6
6
|
|
|
7
|
+
## [0.9.0] — 2026-10-26
|
|
8
|
+
|
|
9
|
+
記録から見える仕事の進め方を、平易な文と、面談で確かめたいことの問いにして、Markdown の先頭に
|
|
10
|
+
書く release。点数・順位・タイプ名は出さない(判断の根拠は `docs/adr/ADR-0002-trait-profile.md`、
|
|
11
|
+
移行は `docs/migration-v090.md`、英語は `docs/en/migration-v090.md`)。CLI フラグと enum 値は変わらない(schema key は照らし合わせの
|
|
12
|
+
subject に任意の 1 つが増える)。公開 Forge 取得
|
|
13
|
+
(provider-neutral Forge証跡、GitHub/GitLab/self-managed、PARTIAL/resume)、attest / portfolio、
|
|
14
|
+
contribution-v2 の契約、`暗黙 PyPI update check` を持たない設計はいずれも 0.8.0 から変わらない。
|
|
15
|
+
|
|
16
|
+
JSON の値が変わるのは次の 4 つの場面で、どれも人や案件について事実と違う数や読みが出うるところを
|
|
17
|
+
直したもの。
|
|
18
|
+
|
|
19
|
+
- 照らし合わせ(`align`、`align --team`)の JSON。向き(`relationship`)を、1 人の件数とチーム全体の
|
|
20
|
+
件数の比ではなく、それぞれの中の割合どうしで決める。軸の窓・傾向の選び方・検証の宣言の単位も、
|
|
21
|
+
実際に数えたものに合わせる
|
|
22
|
+
- `--as-of` を指定したとき、その日のあとの commit・merge・タグを `activity` と `role_profile` に
|
|
23
|
+
数えない
|
|
24
|
+
- `--as-of` を指定しないとき、最後の変更の日を UTC の日付で取る(UTC より西で夕方に出した変更が
|
|
25
|
+
数えから外れていた)
|
|
26
|
+
- identity に書いた人に commit が無いとき、同じ作者名の別人の commit を、その人の数に入れない
|
|
27
|
+
|
|
28
|
+
ほかに、照らし合わせの JSON(alignment-v1)の subject に、同意の記録を写す任意の key
|
|
29
|
+
`actor_consent` が増える(足すだけ。面談の問いはこの値と claimed があるときだけ出す)。
|
|
30
|
+
|
|
31
|
+
0.8.0 で保存した report(`analyze`・`actor`・`repo`)と照らし合わせは、0.9.0 の `verify` では
|
|
32
|
+
定義版数が違うため CANNOT_VERIFY に、project report は定義版数の欄が食い違うため MISMATCH になる。
|
|
33
|
+
書き出した一式(`--out` の collection)は定義版数を見ないので、`--as-of` を付けて作ったものと、
|
|
34
|
+
上の 4 つめの場面に当たるものだけが MISMATCH になる。どれも 0.9.0 で作り直せば検算できる
|
|
35
|
+
(実測は `docs/migration-v090.md`)。
|
|
36
|
+
|
|
37
|
+
### Added
|
|
38
|
+
|
|
39
|
+
- **actor・project・alignment の Markdown の先頭に、記録から見える進め方の文と、面談で確かめたい
|
|
40
|
+
ことの問いを出す**(ADR-0002 段階 1)。actor は「変えた部分の区分(作業領域)」「変更のペース
|
|
41
|
+
(変更リズム)」「テストの付け方(検証の形)」「関わり方」を、件数と期間を添えた文で書き、続けて
|
|
42
|
+
「この記録では見えないこと」「面談で確かめたいこと」「数字の読み方と限界」「根拠」の表を置く。project は
|
|
43
|
+
案件側の要望と、案件のリポジトリから見える進め方を書き、人ごとの数字は出さない。alignment は
|
|
44
|
+
「要望と記録が重なっている点」「面談で確かめたい点」「案件側が書いていないこと(参考)」に
|
|
45
|
+
並べる。0.8.0 の詳しい数字の節はその後ろに残る
|
|
46
|
+
- 文と問いは、公開した決定表(`docs/trait-profile.md`、`docs/en/trait-profile.md`)で JSON の数字から
|
|
47
|
+
選ぶ。量で文を変えず、タイプ名を作らず、重なった項目の数を数えない。文は Markdown にだけ出し、
|
|
48
|
+
JSON には入れない。決定表と定数は `tests/test_v090_trait_tables.py` で結んである
|
|
49
|
+
- 本人向けの文は、本人が名乗った ID(`attribution_state=claimed`)と同意の記録
|
|
50
|
+
(`consent=recorded-explicit-consent`)があるときだけ出す。管理者が登録した ID、公開リポジトリ
|
|
51
|
+
から推定したまとまり、同意の記録が無い ID、浅い clone の記録には、出していない理由を 1 文で
|
|
52
|
+
書く。collection(`--all` / `--top`)には文を出さない。照らし合わせの問いも、本人が名乗った ID と
|
|
53
|
+
同意の記録があるときだけ出す(下の Changed の `actor_consent`)
|
|
54
|
+
- 数が確かめられないときは書かない。`role_profile` の母数がほかの観点と違うとき、浅い clone の
|
|
55
|
+
とき、`--as-of` を指定していてタグを付けた日が分からないときなどは、理由を書いて外す
|
|
56
|
+
|
|
57
|
+
### Changed
|
|
58
|
+
|
|
59
|
+
- **README を日英とも書き直し、PyPI の説明を英語にした**。冒頭で「何を出すか・何を
|
|
60
|
+
出さないか・1 コマンドで試す」が分かる構成にし、版ごとの修正履歴は本ファイルと
|
|
61
|
+
migration へのリンクだけにした。コマンドの詳しい使い方は `docs/usage.md` /
|
|
62
|
+
`docs/en/usage.md`、指標の限界・参照用の位置・群のあいだの判別結果は
|
|
63
|
+
`docs/validation.md` / `docs/en/validation.md` へ内容を移した。`pyproject.toml` の
|
|
64
|
+
`readme` を `README.en.md`(リンクはすべて絶対 URL)に、`description` を評価に
|
|
65
|
+
読めない 1 行に変え、`project_urls` に Homepage(griftai.org)・Documentation・
|
|
66
|
+
Japanese README・Changelog・Source・Issues を揃えた。README を読む検査は移した先の
|
|
67
|
+
文書を読むように直し、PyPI に出る README の相対リンク・`project_urls` の参照先・
|
|
68
|
+
リンクの見出しを `tests/test_readme_entry.py` で検査する。CLI の出力は変わらない。
|
|
69
|
+
|
|
70
|
+
- **Markdown から「傾向の強さ」(`strength`)の行と、alignment の `relationship` の行を外した**
|
|
71
|
+
(ADR-0002)。2 つのレポートを並べると、強い人・弱い人、合う人・合わない人に読めるため。
|
|
72
|
+
見出し「傾向の強さと確からしさ」は「傾向の確からしさ」に、傾向の注意書きは「この傾向の表示は
|
|
73
|
+
変わる可能性があります」になる。JSON は変わらない
|
|
74
|
+
- **Markdown の観点の呼び名を griftai.org にそろえた**。4 つの観点を、サイトと同じ「平易な言い方
|
|
75
|
+
(サイトの用語)」で呼ぶ: 変えた部分の区分(作業領域)、変更のペース(変更リズム)、テストの付け方
|
|
76
|
+
(検証の形)、関わり方(griftai.org は平易な言い方とサイトの用語に同じ語を使うので、見出しは
|
|
77
|
+
「関わり方」だけ)。先頭の節の見出しと文、根拠の表の観点、詳しい数字の節の見出し、傾向の名前、
|
|
78
|
+
案件の要望の項目名が変わる。JSON のキーと、JSON に入る固定文(`limitations` など)は変えない
|
|
79
|
+
(その文には元の言い方が残る)。呼び名は `docs/metrics-guide.md` の表だけに置き、見出しとの一致を
|
|
80
|
+
`tests/test_v090_site_names.py` で検査する
|
|
81
|
+
- **survival のサイトの訳語を「定着率」から「コードの新しさ」(Code recency)に改めた**。値は
|
|
82
|
+
残った行の割合ではなく、いまのコードにある行が書かれてからどれだけ経っているかを 180 日を目安に
|
|
83
|
+
重みを付けて平均した値で、1 に近いほど最近書かれた行が多い(「定着」とは逆の向きに読めた)。
|
|
84
|
+
metrics-guide の対応表、README、`tests/test_v060_docs_parity.py` の `SITE_TERMS` を直した。
|
|
85
|
+
griftai.org と cor-jp.com は別に直す
|
|
86
|
+
- **alignment-v1 の subject に `actor_consent`(任意)を足した**(T7、ユーザーの判断 2026-10-26)。
|
|
87
|
+
`grift align` は actor report の同意の記録を、actor の本人向けの文と同じ関数
|
|
88
|
+
(`actor_basis.consent_recorded`)で確かめ、あるときだけ `recorded-explicit-consent` を写す
|
|
89
|
+
(公開 inferred には付けない)。照らし合わせの面談の問いは、claimed かつこの値があるときだけ
|
|
90
|
+
出し、管理者が登録した ID と同意の記録が無い ID には理由を書く。`grift verify` は保存した値を
|
|
91
|
+
信じず、actor report から作り直して比べる。JSON は key が 1 つ増える(足すだけ)
|
|
92
|
+
- **定義版数を `tep-v0.9.0-2026-10-26` に上げた**(REL-090)。上の JSON の値の変化と Markdown の
|
|
93
|
+
変化に合わせたもの。証跡 4 件(scenarios / scenarios-public / benchmark.json / golden)を 0.9.0 の
|
|
94
|
+
source で作り直す
|
|
95
|
+
|
|
96
|
+
### Deprecated
|
|
97
|
+
|
|
98
|
+
- alignment-v1 の `axes[].actor_tendency.strength` / `axes[].project_tendency.strength`。
|
|
99
|
+
0.9.0 では JSON に残すが Markdown には出さない。次の schema 版で消す
|
|
100
|
+
|
|
101
|
+
### Fixed
|
|
102
|
+
|
|
103
|
+
- **`--as-of` なしのとき、UTC より西で夕方に作った HEAD が自分のレポートから外れていた**。
|
|
104
|
+
観測日を HEAD の作者の現地の日付(`%ad --date=short`)で取り、範囲は各 commit の UTC の日付で
|
|
105
|
+
切っていた。観測日も UTC の日付で取る。HEAD の現地の日付と UTC の日付が違うときだけ、
|
|
106
|
+
`observation_date`・`git_window`・`change_rhythm` が変わる(JSON が変わる)。西の夕方は 1 日あとに
|
|
107
|
+
なり、HEAD の UTC の日の commit がすべて数えに入る。東の朝(日本の 0 時〜9 時など)は 1 日まえに
|
|
108
|
+
なる
|
|
109
|
+
- **identity に宣言した人に commit が無いと、同じ作者名の別人の commit がその人の role_profile に入っていた**。
|
|
110
|
+
名前で作る cluster id は、commit のある identity の id とはぶつからないようにしていたが、commit の無い
|
|
111
|
+
identity の id は空いたままで、別のメールの「Alice」が `alice` を名乗れた。宣言した identity の id は
|
|
112
|
+
commit の有無にかかわらず予約する。そのとき別人の cluster id は名前ではなく hash になる。JSON は、
|
|
113
|
+
その人の role_profile と experience の数、repo report-v2 の `actor_directory` の id、
|
|
114
|
+
`partition_digest`、collection の card の id とファイル名が変わる
|
|
115
|
+
- **`--as-of` を指定しても、activity と role_profile が観測日のあとの commit・merge・タグまで数えていた**。
|
|
116
|
+
surface・検証・間隔の節は観測日で切っていたので、同じレポートの中で数が食い違っていた。activity は
|
|
117
|
+
観測日(UTC)までの自分の commit で数え、role_profile は観測日の終わりまでの commit とタグで数えて、
|
|
118
|
+
窓の終わりを観測日にする。activity には `core_activity_period` も入り、`--identity` を付けた
|
|
119
|
+
repo report-v2 の activity も変わる(JSON が変わる)。`--as-of` で書き出した collection の検算
|
|
120
|
+
(`grift verify DIR`)も、同じ日付で数え直す。`--as-of` を指定しないときは今までどおり。
|
|
121
|
+
experience は依存の読み取りに日付が無いので、まだ切っていない
|
|
122
|
+
|
|
123
|
+
次は、設計書 `docs/design/trait-profile-20261026.md` §1.4 に記録した 0.8.0 の食い違いの直し。
|
|
124
|
+
alignment-v1 の JSON(`relationship`、軸の窓、検証の宣言の単位、傾向)と、`align --team` の
|
|
125
|
+
JSON(検証の宣言の単位)、actor・project・alignment の Markdown が変わる。
|
|
126
|
+
|
|
127
|
+
`relationship` は値の意味が変わる(破壊的変更)。0.8.0 は件数どうしの比で、0.9.0 は範囲の中の
|
|
128
|
+
割合どうしで向きを決める。
|
|
129
|
+
|
|
130
|
+
- **`relationship` が 1 人の件数とチーム全体の件数の比で向きを決めていた**。`surfaces.*` と
|
|
131
|
+
`verification.*` は、それぞれの範囲の中の割合(`surface_commit_share`、`test_type_share`)
|
|
132
|
+
どうしで比べ、`"compared": "commit_share"` と、比べた割合(`actor_share` / `project_share`)を
|
|
133
|
+
付ける。割合の母数が 20 に届かない側があれば `not_comparable`(`observed_unavailable`)。
|
|
134
|
+
`change_rhythm.*` は 1 人とリポジトリ全体で母集団が違うので、常に `not_comparable`
|
|
135
|
+
(`scope_not_equivalent`)にした
|
|
136
|
+
- **surface と検証の軸に 180 日窓が付いていた**。どちらも観測日までの履歴を数えているので、
|
|
137
|
+
`actor_window` / `project_window` を `{"end": 観測日, "basis": "history_to_observation_date"}`
|
|
138
|
+
にし、Markdown では「〜までの履歴」と書く。surface の傾向の window も同じにした。浅い clone なら
|
|
139
|
+
取得できた範囲で、project-v1 にはそれが記録されないので、「全履歴」とは書かない
|
|
140
|
+
- **間隔の傾向が値に関係なく「定期的な変更提出」と出ていた**。`rhythm_tendency` の `value` を
|
|
141
|
+
常に `rhythm_observed` にした(形は `basis` の数字が示す)。`strength` は固定の `moderate` の
|
|
142
|
+
まま残る。strength は同じ 0.9.0 の別の変更で Markdown から外し、JSON では非推奨にする
|
|
143
|
+
- **surface の傾向の分母が一覧と違っていた**。file-change ではなく commit の割合
|
|
144
|
+
(`surface_commit_share`)で選び、割合が未観測なら `not_proven` にする(0.8.0 は未観測の割合を
|
|
145
|
+
0.0 と読み、同点で `test` が選ばれていた)。commit の割合では、本体とテストを一緒に変えた
|
|
146
|
+
commit が両方に入るので、割合がいちばん大きい場所が 2 つ以上あるときも `not_proven`
|
|
147
|
+
(`tied_top_share`)にし、同じ割合の場所を `tied` に並べる
|
|
148
|
+
- **検証の種類の宣言が `surface` と書かれていた**。`verification.*` の `declared.unit` を
|
|
149
|
+
`verification-type` にした。同じ関数を使う `align --team` の `requirements[].declared.unit` も
|
|
150
|
+
同じ値になる
|
|
151
|
+
- **Markdown に案件の題名が出ず、単位の名前が値に付いていた**(`payments-api id`、
|
|
152
|
+
`backend, data surface-names`)。project と alignment の Markdown に題名を出し、種類を表すだけの
|
|
153
|
+
単位名は Markdown では書かない(JSON は変えない)。題名が無い案件は「案件側が書いていません」と書く
|
|
154
|
+
- **日本語の Markdown で、選択性の注記だけが英語だった**。actor report と alignment の
|
|
155
|
+
Markdown には同じ意味の日本語の文(`SELECTIVITY_NOTICE_JA`)を出す。JSON の `notices` は英語の
|
|
156
|
+
固定文のまま。norms §6(日英)に日本語の文を足した
|
|
157
|
+
- **metrics-guide の survival の説明が実装と逆の読みだった**(「180 日後も残っている行の割合」)。
|
|
158
|
+
`survival.py` のとおり、HEAD にある行の新しさの平均(τ=180 日、最大 40 ファイル)と書き直し、
|
|
159
|
+
文書と定数を `tests/test_v090_v080_discrepancies.py` で結んだ。対応表から survival の節への
|
|
160
|
+
リンクが切れていたのも直し、metrics-guide(日英)をリンクの検査(`tests/test_readme_entry.py`)に
|
|
161
|
+
入れた
|
|
162
|
+
|
|
163
|
+
## [0.8.0] — 2026-10-25
|
|
164
|
+
|
|
165
|
+
面は増えない。公開面が約束する「点数や順位はつけない」「選んで出したことも受け取る側に
|
|
166
|
+
分かる」「量は誰でも作れる」を既定出力に揃える release。CLI フラグ・schema key・enum 値は
|
|
167
|
+
変わらない。公開 Forge 取得(provider-neutral Forge証跡、GitHub/GitLab/self-managed、
|
|
168
|
+
PARTIAL/resume)、attest / portfolio、contribution-v2 の契約、`暗黙 PyPI update check` を
|
|
169
|
+
持たない設計はいずれも 0.7.2 から変わらない。判断の根拠は
|
|
170
|
+
`docs/adr/ADR-0001-v08-no-volume-ordering.md`、公開面との突合は
|
|
171
|
+
`docs/GAP-site-vs-cli-v08-20261025.md`、移行は `docs/migration-v080.md`。
|
|
172
|
+
|
|
173
|
+
### Added
|
|
174
|
+
|
|
175
|
+
- **活動日数の膨らませ方を数値の隣に開示する**(ADR-0001 R4、GAP-site-vs-cli
|
|
176
|
+
行 4)。`tep_core.v2_constants.ACTIVE_DAYS_INFLATION_LIMITATION` の 1 文
|
|
177
|
+
(毎日 1 件の小さな commit で増え、1 日にまとめると減る。量や中身は見ない)
|
|
178
|
+
を report-v1 のトップレベル `limitations`(新 optional key。`activity` の
|
|
179
|
+
中に置かないのは P0 反証 `P0-legacy-activity-parity` が同ブロックを v0.5.9
|
|
180
|
+
と同一に保つため)、report-v2 `activity.limitations`、report-v2
|
|
181
|
+
`change_rhythm.limitations`、`align` の `change_rhythm.active_days_180d`
|
|
182
|
+
軸の `limitations` と、それぞれの Markdown に固定で載せる。開示であって
|
|
183
|
+
補正ではなく、値・比較結果・schema の必須項目は変えない(norms §7)。
|
|
184
|
+
`verify` は `limitations` も再計算して比べる。同じ定義版数の build 間では
|
|
185
|
+
report-v1 のトップレベル `limitations` と report-v2 の `activity.limitations` /
|
|
186
|
+
`change_rhythm.limitations` が差として出る(PR #77 本文の実測)。release で
|
|
187
|
+
`DEFINITION_VERSION` を上げた後は、0.7.x で保存した report は field 比較の前に
|
|
188
|
+
定義版数の不一致で CANNOT_VERIFY になる(`verify.py` の定義版数検査)。
|
|
189
|
+
`DEFINITION_VERSION` と `__version__` は release PR で上げる。
|
|
190
|
+
- 単体の actor report-v2 と alignment-v1 の `notices` に、提供者が選んだ 1 repo で
|
|
191
|
+
あることを示す固定文 `SELECTIVITY_NOTICE`(norms §6)を常に載せる。Markdown の
|
|
192
|
+
「言えること / 言えないこと」にも同じ文を出す。schema は `notices: array<string>`
|
|
193
|
+
のため追加互換だが、`verify` は `notices` も再計算して比べるので 0.7.x で保存した
|
|
194
|
+
actor report と alignment-v1 は 0.8.0 の verify で MISMATCH になる(release PR の
|
|
195
|
+
`DEFINITION_VERSION` と migration で扱う)。文は英語で固定(両側が読む 1 文を
|
|
196
|
+
collection の英語 limitation 文に揃えた決定。GAP 行 7 の日本語案は採らない)。
|
|
197
|
+
collection の `repo-report.json`(kind=repo)と actor-card-v1 は対象外。
|
|
198
|
+
|
|
199
|
+
### Changed
|
|
200
|
+
|
|
201
|
+
- **`DEFINITION_VERSION` を `tep-v0.8.0-2026-10-25` に上げた**。版数への追随に加えて、
|
|
202
|
+
actor-index / `actor_directory` の形(行順)と、actor report-v2 / alignment の
|
|
203
|
+
`notices`、report-v1 / report-v2 の `limitations` の内容が変わるため。0.7.x で
|
|
204
|
+
保存した report は 0.8.0 の `verify` で定義版数の不一致により CANNOT_VERIFY、
|
|
205
|
+
collection は index の行順検査で MISMATCH になる(`docs/migration-v080.md`)。
|
|
206
|
+
- **証跡を 0.8.0 の source で再束縛した**: `evidence/v060/scenarios`(6 シナリオ。
|
|
207
|
+
R01 / R02 の source は 2026-09-27 の bundle から復元)、`evidence/v060/scenarios-public`
|
|
208
|
+
(PR tier 実走)、`evidence/v070/benchmark.json`(`--write`)、`benchmarks/v060/golden`
|
|
209
|
+
(承認移行 `gold-actor-partition-0005`、承認者 human:teradakousuke)。
|
|
210
|
+
- **actor を列挙する既定出力の行順を actor id 順にした**(0.8.0 #1、ADR-0001 R1)。
|
|
211
|
+
0.7.2 までは、`actor-index.json` / `actor-index.md` の行と selected card の
|
|
212
|
+
列挙(`actor_artifacts.py` の `-len(commit_shas)` ソート)と、`grift repo` の
|
|
213
|
+
report-v2 `actor_directory.actors`(`attribution.py` の同じソートをそのまま
|
|
214
|
+
出力し、Markdown は先頭 50 行で切っていた = 事実上の上位 50 名表)の 2 箇所が
|
|
215
|
+
観測 commit 数の多い順だった。注記「not a quality ranking」は宣言のまま、
|
|
216
|
+
表の並びという実体は量で決まっていた。公開面の「点数や順位はつけない」と
|
|
217
|
+
食い違うので並び順だけを直し、`commit_count` の値は分母付きの事実として
|
|
218
|
+
残す。actor id は identity があれば canonical_id、無ければ `actor_<hash>`。`--top N` が選ぶ N 名は変わらない(量で選ぶ経路は 0.9 で
|
|
219
|
+
廃止か改名をユーザーが判断する。`docs/PLAN-v080-20261025.md` §2.3)。
|
|
220
|
+
`grift verify DIR` は、行が actor id 順でない index、行順に従わない
|
|
221
|
+
selection、最多 commit の集合でない `top` selection を digest 比較の前に
|
|
222
|
+
拒否し、CLI の collection verify は writer と同じ `actor_summaries` で行を
|
|
223
|
+
再構成する(0.7.x は verify 側に同じソートの複製があった)。**0.7.x で生成
|
|
224
|
+
した collection は 0.8.0 の `verify` で MISMATCH になる**(複数 actor なら
|
|
225
|
+
`actor index rows must be ordered by actor id …`、行が偶然 id 順でも
|
|
226
|
+
`actor-index.md` の注記差で `actor index Markdown does not match verified
|
|
227
|
+
JSON`)。release 時に `DEFINITION_VERSION` を上げ、migration に実測を載せる。
|
|
228
|
+
|
|
229
|
+
### Fixed
|
|
230
|
+
|
|
231
|
+
- **shallow clone 上で offline suite が `not our ref` / `not a tree object`
|
|
232
|
+
で落ちる**。`tests/test_v070_benchmark.py` と
|
|
233
|
+
`tests/test_v060_scenario_matrix.py` の registry 検証は、この repo 自身の
|
|
234
|
+
履歴(`PINNED_OID`、runner binding の `commit_oid`)を `file://` で fetch
|
|
235
|
+
して測る。`actions/checkout@v4` 既定の `--depth 1` で公開 repo を取得した
|
|
236
|
+
消費側(grift-sales-poc run 40165305773、2026-10-25)にはその commit が
|
|
237
|
+
無く、ローカル upload-pack の拒否が GitHub 側のエラーのように見えていた
|
|
238
|
+
(GitHub 自体は同じ SHA を `git fetch` に返す)。shallow clone でその
|
|
239
|
+
commit が無い場合だけ理由付き skip にし、full clone で pin が無い場合は
|
|
240
|
+
従来どおり fail させる。検出関数は合成 repo の反証テスト付き。
|
|
241
|
+
`scripts/v060_scenario_matrix.py` は registry の source binding 対象の
|
|
242
|
+
ため触っていない(`fatal: not a tree object` の文言改善は再束縛を伴う
|
|
243
|
+
次の release 作業へ)。
|
|
244
|
+
|
|
7
245
|
## [0.7.2] — 2026-09-07
|
|
8
246
|
|
|
9
247
|
面は 1 つも増えない。commit がまだ 1 件も無い actor に対して report が
|