arcgraph 0.1.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.
- arcgraph-0.1.0/.github/ISSUE_TEMPLATE/bug_report.md +40 -0
- arcgraph-0.1.0/.github/ISSUE_TEMPLATE/config.yml +5 -0
- arcgraph-0.1.0/.github/ISSUE_TEMPLATE/feature_request.md +24 -0
- arcgraph-0.1.0/.github/PULL_REQUEST_TEMPLATE.md +19 -0
- arcgraph-0.1.0/.github/dependabot.yml +59 -0
- arcgraph-0.1.0/.github/workflows/ci.yml +285 -0
- arcgraph-0.1.0/.gitignore +35 -0
- arcgraph-0.1.0/CODE_OF_CONDUCT.md +113 -0
- arcgraph-0.1.0/CONTRIBUTING.md +61 -0
- arcgraph-0.1.0/LICENSE +203 -0
- arcgraph-0.1.0/PKG-INFO +676 -0
- arcgraph-0.1.0/README.md +637 -0
- arcgraph-0.1.0/RELEASE_NOTES.md +18 -0
- arcgraph-0.1.0/SECURITY.md +135 -0
- arcgraph-0.1.0/SUPPORT.md +37 -0
- arcgraph-0.1.0/arcgraph/__init__.py +41 -0
- arcgraph-0.1.0/arcgraph/_build_provenance.json +10 -0
- arcgraph-0.1.0/arcgraph/adapters/__init__.py +6 -0
- arcgraph-0.1.0/arcgraph/adapters/arq_adapter.py +369 -0
- arcgraph-0.1.0/arcgraph/adapters/celery_adapter.py +440 -0
- arcgraph-0.1.0/arcgraph/adapters/common.py +436 -0
- arcgraph-0.1.0/arcgraph/adapters/django_adapter.py +765 -0
- arcgraph-0.1.0/arcgraph/adapters/fastapi_adapter.py +415 -0
- arcgraph-0.1.0/arcgraph/adapters/logging_adapter.py +335 -0
- arcgraph-0.1.0/arcgraph/adapters/mcp_adapter.py +100 -0
- arcgraph-0.1.0/arcgraph/adapters/pydantic_adapter.py +290 -0
- arcgraph-0.1.0/arcgraph/adapters/pytest_adapter.py +221 -0
- arcgraph-0.1.0/arcgraph/adapters/pytest_collection.py +96 -0
- arcgraph-0.1.0/arcgraph/adapters/pytest_fixtures.py +371 -0
- arcgraph-0.1.0/arcgraph/adapters/pytest_types.py +251 -0
- arcgraph-0.1.0/arcgraph/adapters/registry.py +34 -0
- arcgraph-0.1.0/arcgraph/adapters/service_container_adapter.py +548 -0
- arcgraph-0.1.0/arcgraph/adapters/sqlalchemy_adapter.py +446 -0
- arcgraph-0.1.0/arcgraph/adapters/typer_click_adapter.py +292 -0
- arcgraph-0.1.0/arcgraph/analyzers/__init__.py +1 -0
- arcgraph-0.1.0/arcgraph/analyzers/bindings.py +782 -0
- arcgraph-0.1.0/arcgraph/analyzers/calls/__init__.py +6 -0
- arcgraph-0.1.0/arcgraph/analyzers/calls/analyzer.py +2921 -0
- arcgraph-0.1.0/arcgraph/analyzers/calls/constants.py +702 -0
- arcgraph-0.1.0/arcgraph/analyzers/calls/context.py +298 -0
- arcgraph-0.1.0/arcgraph/analyzers/calls/lexical.py +237 -0
- arcgraph-0.1.0/arcgraph/analyzers/coverage.py +826 -0
- arcgraph-0.1.0/arcgraph/analyzers/exports.py +46 -0
- arcgraph-0.1.0/arcgraph/analyzers/har_trace.py +323 -0
- arcgraph-0.1.0/arcgraph/analyzers/imports.py +190 -0
- arcgraph-0.1.0/arcgraph/analyzers/otel_trace.py +352 -0
- arcgraph-0.1.0/arcgraph/analyzers/precise_references.py +1199 -0
- arcgraph-0.1.0/arcgraph/analyzers/python_scopes.py +56 -0
- arcgraph-0.1.0/arcgraph/analyzers/runtime_trace.py +516 -0
- arcgraph-0.1.0/arcgraph/analyzers/similarity.py +430 -0
- arcgraph-0.1.0/arcgraph/analyzers/symbols.py +363 -0
- arcgraph-0.1.0/arcgraph/analyzers/type_unions.py +89 -0
- arcgraph-0.1.0/arcgraph/analyzers/types.py +2293 -0
- arcgraph-0.1.0/arcgraph/assets/__init__.py +1 -0
- arcgraph-0.1.0/arcgraph/assets/workbench/__init__.py +1 -0
- arcgraph-0.1.0/arcgraph/assets/workbench/index.html +2398 -0
- arcgraph-0.1.0/arcgraph/assets/workbench/vendor/LICENSE.d3.txt +15 -0
- arcgraph-0.1.0/arcgraph/assets/workbench/vendor/d3.v7.min.js +2 -0
- arcgraph-0.1.0/arcgraph/change/__init__.py +10 -0
- arcgraph-0.1.0/arcgraph/change/baseline.py +145 -0
- arcgraph-0.1.0/arcgraph/change/changed_regions.py +728 -0
- arcgraph-0.1.0/arcgraph/change/contracts.py +927 -0
- arcgraph-0.1.0/arcgraph/change/errors.py +88 -0
- arcgraph-0.1.0/arcgraph/change/evidence.py +289 -0
- arcgraph-0.1.0/arcgraph/change/graph_delta.py +1422 -0
- arcgraph-0.1.0/arcgraph/change/identities.py +1277 -0
- arcgraph-0.1.0/arcgraph/change/paths.py +234 -0
- arcgraph-0.1.0/arcgraph/change/pins.py +426 -0
- arcgraph-0.1.0/arcgraph/change/planner.py +504 -0
- arcgraph-0.1.0/arcgraph/change/protected_surfaces.py +328 -0
- arcgraph-0.1.0/arcgraph/change/provider.py +46 -0
- arcgraph-0.1.0/arcgraph/change/service.py +1030 -0
- arcgraph-0.1.0/arcgraph/change/source_provider.py +311 -0
- arcgraph-0.1.0/arcgraph/change/store.py +1138 -0
- arcgraph-0.1.0/arcgraph/change/trusted_runners.py +154 -0
- arcgraph-0.1.0/arcgraph/change/verdicts.py +141 -0
- arcgraph-0.1.0/arcgraph/change/verification_plan.py +113 -0
- arcgraph-0.1.0/arcgraph/change/verifier.py +579 -0
- arcgraph-0.1.0/arcgraph/core/__init__.py +1 -0
- arcgraph-0.1.0/arcgraph/core/assurance.py +343 -0
- arcgraph-0.1.0/arcgraph/core/binding_metrics.py +75 -0
- arcgraph-0.1.0/arcgraph/core/cleanup.py +701 -0
- arcgraph-0.1.0/arcgraph/core/confidence_profiles.py +108 -0
- arcgraph-0.1.0/arcgraph/core/evidence_manifest.py +862 -0
- arcgraph-0.1.0/arcgraph/core/expression_kinds.py +11 -0
- arcgraph-0.1.0/arcgraph/core/force_graph_export.py +1125 -0
- arcgraph-0.1.0/arcgraph/core/freshness.py +94 -0
- arcgraph-0.1.0/arcgraph/core/graph_store.py +1099 -0
- arcgraph-0.1.0/arcgraph/core/ids.py +206 -0
- arcgraph-0.1.0/arcgraph/core/language_tiers.py +150 -0
- arcgraph-0.1.0/arcgraph/core/merge.py +649 -0
- arcgraph-0.1.0/arcgraph/core/metadata.py +30 -0
- arcgraph-0.1.0/arcgraph/core/operation_lock.py +218 -0
- arcgraph-0.1.0/arcgraph/core/passes.py +142 -0
- arcgraph-0.1.0/arcgraph/core/payload_policy.py +708 -0
- arcgraph-0.1.0/arcgraph/core/precise_references.py +124 -0
- arcgraph-0.1.0/arcgraph/core/query_engine.py +3078 -0
- arcgraph-0.1.0/arcgraph/core/recovery.py +18 -0
- arcgraph-0.1.0/arcgraph/core/scanner.py +1454 -0
- arcgraph-0.1.0/arcgraph/core/schemas.py +700 -0
- arcgraph-0.1.0/arcgraph/core/semantic.py +263 -0
- arcgraph-0.1.0/arcgraph/core/semantic_metrics.py +619 -0
- arcgraph-0.1.0/arcgraph/core/sharing_retry.py +84 -0
- arcgraph-0.1.0/arcgraph/core/structural.py +260 -0
- arcgraph-0.1.0/arcgraph/core/target_resolver.py +486 -0
- arcgraph-0.1.0/arcgraph/core/type_metrics.py +67 -0
- arcgraph-0.1.0/arcgraph/core/unresolved_classification.py +471 -0
- arcgraph-0.1.0/arcgraph/core/utils.py +100 -0
- arcgraph-0.1.0/arcgraph/core/visual_contract.py +240 -0
- arcgraph-0.1.0/arcgraph/core/visual_slice_engine.py +933 -0
- arcgraph-0.1.0/arcgraph/interfaces/__init__.py +1 -0
- arcgraph-0.1.0/arcgraph/interfaces/agent_capabilities.py +493 -0
- arcgraph-0.1.0/arcgraph/interfaces/agent_help.py +313 -0
- arcgraph-0.1.0/arcgraph/interfaces/benchmark.py +548 -0
- arcgraph-0.1.0/arcgraph/interfaces/ci.py +1992 -0
- arcgraph-0.1.0/arcgraph/interfaces/cli.py +2799 -0
- arcgraph-0.1.0/arcgraph/interfaces/cli_change.py +690 -0
- arcgraph-0.1.0/arcgraph/interfaces/cli_feedback.py +176 -0
- arcgraph-0.1.0/arcgraph/interfaces/cli_ops.py +69 -0
- arcgraph-0.1.0/arcgraph/interfaces/cli_support.py +113 -0
- arcgraph-0.1.0/arcgraph/interfaces/cli_trial.py +42 -0
- arcgraph-0.1.0/arcgraph/interfaces/cli_visual.py +601 -0
- arcgraph-0.1.0/arcgraph/interfaces/cli_workspace.py +300 -0
- arcgraph-0.1.0/arcgraph/interfaces/client_setup.py +481 -0
- arcgraph-0.1.0/arcgraph/interfaces/docs.py +1255 -0
- arcgraph-0.1.0/arcgraph/interfaces/human_output.py +409 -0
- arcgraph-0.1.0/arcgraph/interfaces/local_state.py +577 -0
- arcgraph-0.1.0/arcgraph/interfaces/mcp_server.py +457 -0
- arcgraph-0.1.0/arcgraph/interfaces/mcp_tools.py +1209 -0
- arcgraph-0.1.0/arcgraph/interfaces/metrics.py +571 -0
- arcgraph-0.1.0/arcgraph/interfaces/ops.py +330 -0
- arcgraph-0.1.0/arcgraph/interfaces/precision.py +1670 -0
- arcgraph-0.1.0/arcgraph/interfaces/project_probe.py +75 -0
- arcgraph-0.1.0/arcgraph/interfaces/reports.py +1121 -0
- arcgraph-0.1.0/arcgraph/interfaces/stdio_encoding.py +29 -0
- arcgraph-0.1.0/arcgraph/interfaces/trace.py +592 -0
- arcgraph-0.1.0/arcgraph/interfaces/trial_feedback.py +519 -0
- arcgraph-0.1.0/arcgraph/interfaces/trial_setup.py +535 -0
- arcgraph-0.1.0/arcgraph/interfaces/visual_server.py +354 -0
- arcgraph-0.1.0/arcgraph/interfaces/visual_slice.py +168 -0
- arcgraph-0.1.0/arcgraph/interfaces/visual_smoke.py +666 -0
- arcgraph-0.1.0/arcgraph/interfaces/workbench.py +576 -0
- arcgraph-0.1.0/arcgraph/interfaces/workspace.py +1513 -0
- arcgraph-0.1.0/arcgraph/pipeline/__init__.py +1 -0
- arcgraph-0.1.0/arcgraph/pipeline/contracts.py +122 -0
- arcgraph-0.1.0/arcgraph/pipeline/external_frontend.py +451 -0
- arcgraph-0.1.0/arcgraph/pipeline/external_l3_frontends.py +368 -0
- arcgraph-0.1.0/arcgraph/pipeline/external_protocol.py +358 -0
- arcgraph-0.1.0/arcgraph/pipeline/frontends.py +437 -0
- arcgraph-0.1.0/arcgraph/pipeline/indexer.py +661 -0
- arcgraph-0.1.0/arcgraph/pipeline/openapi_frontend.py +708 -0
- arcgraph-0.1.0/arcgraph/pipeline/python_frontend.py +298 -0
- arcgraph-0.1.0/arcgraph/pipeline/reindexer.py +1333 -0
- arcgraph-0.1.0/arcgraph/pipeline/scip_frontend.py +726 -0
- arcgraph-0.1.0/arcgraph/pipeline/typescript_extractor/declarations.mjs +183 -0
- arcgraph-0.1.0/arcgraph/pipeline/typescript_extractor/edges.mjs +2794 -0
- arcgraph-0.1.0/arcgraph/pipeline/typescript_extractor/graph_primitives.mjs +189 -0
- arcgraph-0.1.0/arcgraph/pipeline/typescript_extractor/module_resolution.mjs +877 -0
- arcgraph-0.1.0/arcgraph/pipeline/typescript_extractor/runtime.mjs +56 -0
- arcgraph-0.1.0/arcgraph/pipeline/typescript_extractor/similarity.mjs +619 -0
- arcgraph-0.1.0/arcgraph/pipeline/typescript_extractor/similarity_runner.mjs +19 -0
- arcgraph-0.1.0/arcgraph/pipeline/typescript_extractor/sources.mjs +23 -0
- arcgraph-0.1.0/arcgraph/pipeline/typescript_extractor.mjs +177 -0
- arcgraph-0.1.0/arcgraph/pipeline/typescript_frameworks.py +947 -0
- arcgraph-0.1.0/arcgraph/pipeline/typescript_frontend.py +656 -0
- arcgraph-0.1.0/arcgraph/pipeline/typescript_references.mjs +167 -0
- arcgraph-0.1.0/arcgraph/providers/__init__.py +27 -0
- arcgraph-0.1.0/arcgraph/providers/context_provider.py +1258 -0
- arcgraph-0.1.0/arcgraph/providers/flow_payload.py +117 -0
- arcgraph-0.1.0/arcgraph/providers/memory_connector.py +216 -0
- arcgraph-0.1.0/arcgraph/providers/orchestrator.py +475 -0
- arcgraph-0.1.0/arcgraph/providers/relationship_payload.py +102 -0
- arcgraph-0.1.0/arcgraph/providers/risk_provider.py +843 -0
- arcgraph-0.1.0/arcgraph/providers/why_provider.py +349 -0
- arcgraph-0.1.0/arcgraph/version_info.py +246 -0
- arcgraph-0.1.0/docs/agent-reading-guide.md +771 -0
- arcgraph-0.1.0/docs/architecture.md +33 -0
- arcgraph-0.1.0/docs/change-preflight.md +98 -0
- arcgraph-0.1.0/docs/change-safety.md +283 -0
- arcgraph-0.1.0/docs/clean-checkout-smoke.md +102 -0
- arcgraph-0.1.0/docs/client-setup.md +192 -0
- arcgraph-0.1.0/docs/examples/agent-context.md +25 -0
- arcgraph-0.1.0/docs/examples/evidence-inputs.md +58 -0
- arcgraph-0.1.0/docs/examples/external-l3-payload.md +52 -0
- arcgraph-0.1.0/docs/examples/impact-analysis.md +30 -0
- arcgraph-0.1.0/docs/examples/mcp_readonly_host.py +89 -0
- arcgraph-0.1.0/docs/examples/source-checkout-smoke.md +140 -0
- arcgraph-0.1.0/docs/external-trial-guide.md +492 -0
- arcgraph-0.1.0/docs/language-support.md +153 -0
- arcgraph-0.1.0/docs/mcp-usage.md +272 -0
- arcgraph-0.1.0/docs/package-readiness.md +47 -0
- arcgraph-0.1.0/docs/provenance.md +25 -0
- arcgraph-0.1.0/docs/release-tooling.md +93 -0
- arcgraph-0.1.0/docs/release_notes/v0.1.0-rc10.md +182 -0
- arcgraph-0.1.0/docs/release_notes/v0.1.0-rc7.md +139 -0
- arcgraph-0.1.0/docs/release_notes/v0.1.0-rc8.md +200 -0
- arcgraph-0.1.0/docs/release_notes/v0.1.0-rc9.md +184 -0
- arcgraph-0.1.0/docs/release_notes/v0.1.0.md +208 -0
- arcgraph-0.1.0/docs/runbook.md +315 -0
- arcgraph-0.1.0/hatch_build.py +116 -0
- arcgraph-0.1.0/package-lock.json +29 -0
- arcgraph-0.1.0/package.json +14 -0
- arcgraph-0.1.0/pyproject.toml +194 -0
- arcgraph-0.1.0/scripts/arcgraph.py +23 -0
- arcgraph-0.1.0/scripts/arcgraph_clean_checkout_smoke.py +547 -0
- arcgraph-0.1.0/scripts/arcgraph_external_trial_bundle.py +1479 -0
- arcgraph-0.1.0/scripts/arcgraph_mcp_protocol_probe.py +366 -0
- arcgraph-0.1.0/scripts/arcgraph_multi_project_trial_probe.py +809 -0
- arcgraph-0.1.0/scripts/arcgraph_package_readiness_smoke.py +2452 -0
- arcgraph-0.1.0/scripts/arcgraph_release_candidate_check.py +863 -0
- arcgraph-0.1.0/scripts/arcgraph_release_gate.py +451 -0
- arcgraph-0.1.0/scripts/arcgraph_source_checkout_smoke.py +298 -0
- arcgraph-0.1.0/scripts/arcgraph_text_encoding_check.py +242 -0
- arcgraph-0.1.0/scripts/arcgraph_trial_contract.py +25 -0
- arcgraph-0.1.0/scripts/install-arcgraph-precision-tools.ps1 +180 -0
- arcgraph-0.1.0/viz/.gitignore +1 -0
- arcgraph-0.1.0/viz/extract_graph.py +112 -0
- arcgraph-0.1.0/viz/index.html +66 -0
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Bug report
|
|
3
|
+
about: Report a reproducible ArcGraph defect
|
|
4
|
+
title: "[Bug]: "
|
|
5
|
+
labels: bug
|
|
6
|
+
assignees: ""
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Summary
|
|
10
|
+
|
|
11
|
+
What happened?
|
|
12
|
+
|
|
13
|
+
## Environment
|
|
14
|
+
|
|
15
|
+
- OS:
|
|
16
|
+
- Python version:
|
|
17
|
+
- Node/npm version, if TypeScript analysis is involved:
|
|
18
|
+
- ArcGraph commit or version:
|
|
19
|
+
|
|
20
|
+
## Reproduction
|
|
21
|
+
|
|
22
|
+
```powershell
|
|
23
|
+
# paste the smallest command sequence that reproduces the issue
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## Expected Behavior
|
|
27
|
+
|
|
28
|
+
What did you expect?
|
|
29
|
+
|
|
30
|
+
## Actual Behavior
|
|
31
|
+
|
|
32
|
+
What did ArcGraph print or produce?
|
|
33
|
+
|
|
34
|
+
## Safety Check
|
|
35
|
+
|
|
36
|
+
Do not include secrets, private repository content, tokens, or sensitive source
|
|
37
|
+
snippets unless you have explicitly sanitized them.
|
|
38
|
+
|
|
39
|
+
Do not report a security vulnerability or credential exposure here. Follow the
|
|
40
|
+
private reporting path in SECURITY.md instead.
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
blank_issues_enabled: false
|
|
2
|
+
contact_links:
|
|
3
|
+
- name: Report a security vulnerability
|
|
4
|
+
url: https://github.com/glyphevo/arcgraph/blob/main/SECURITY.md
|
|
5
|
+
about: Do not open a public issue for a vulnerability or credential exposure. Follow the private reporting path in SECURITY.md.
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Feature request
|
|
3
|
+
about: Propose a scoped ArcGraph improvement
|
|
4
|
+
title: "[Feature]: "
|
|
5
|
+
labels: enhancement
|
|
6
|
+
assignees: ""
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Problem
|
|
10
|
+
|
|
11
|
+
What workflow or evidence gap should this improve?
|
|
12
|
+
|
|
13
|
+
## Proposed Capability
|
|
14
|
+
|
|
15
|
+
What should ArcGraph do?
|
|
16
|
+
|
|
17
|
+
## Current Workaround
|
|
18
|
+
|
|
19
|
+
How do you handle this today?
|
|
20
|
+
|
|
21
|
+
## Boundaries
|
|
22
|
+
|
|
23
|
+
Does this require package publishing, public MCP distribution, network services,
|
|
24
|
+
or production-readiness claims? If so, call that out explicitly.
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
## Summary
|
|
2
|
+
|
|
3
|
+
-
|
|
4
|
+
|
|
5
|
+
## Validation
|
|
6
|
+
|
|
7
|
+
- [ ] `python -m pytest arcgraph\tests scripts\tests -q`
|
|
8
|
+
- [ ] `python -m black arcgraph scripts --check`
|
|
9
|
+
- [ ] `python -m ruff check arcgraph scripts`
|
|
10
|
+
- [ ] `python scripts\arcgraph.py ci`
|
|
11
|
+
|
|
12
|
+
## Public-Safe Checklist
|
|
13
|
+
|
|
14
|
+
- [ ] No generated artifacts, `dist`, `node_modules`, caches, or smoke outputs
|
|
15
|
+
are committed.
|
|
16
|
+
- [ ] No secrets, private repository contents, or local process notes are
|
|
17
|
+
included.
|
|
18
|
+
- [ ] Documentation does not claim production readiness, stable APIs, public
|
|
19
|
+
package publishing, or public MCP distribution unless separately approved.
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
version: 2
|
|
2
|
+
|
|
3
|
+
updates:
|
|
4
|
+
- package-ecosystem: pip
|
|
5
|
+
directory: /
|
|
6
|
+
schedule:
|
|
7
|
+
interval: weekly
|
|
8
|
+
day: monday
|
|
9
|
+
time: '09:00'
|
|
10
|
+
timezone: Etc/UTC
|
|
11
|
+
groups:
|
|
12
|
+
python-dependencies:
|
|
13
|
+
patterns:
|
|
14
|
+
- '*'
|
|
15
|
+
ignore:
|
|
16
|
+
# Ruff 0.x minor releases can be breaking. Keep the reviewed upper bound
|
|
17
|
+
# until a dedicated migration updates the rule policy and codebase.
|
|
18
|
+
- dependency-name: ruff
|
|
19
|
+
versions:
|
|
20
|
+
- '>=0.16.0'
|
|
21
|
+
open-pull-requests-limit: 5
|
|
22
|
+
commit-message:
|
|
23
|
+
prefix: deps
|
|
24
|
+
|
|
25
|
+
- package-ecosystem: npm
|
|
26
|
+
directory: /
|
|
27
|
+
schedule:
|
|
28
|
+
interval: weekly
|
|
29
|
+
day: monday
|
|
30
|
+
time: '09:00'
|
|
31
|
+
timezone: Etc/UTC
|
|
32
|
+
groups:
|
|
33
|
+
npm-dependencies:
|
|
34
|
+
patterns:
|
|
35
|
+
- '*'
|
|
36
|
+
ignore:
|
|
37
|
+
# ArcGraph consumes the TypeScript compiler API. Major upgrades require
|
|
38
|
+
# an explicit compatibility review before Dependabot may propose them.
|
|
39
|
+
- dependency-name: typescript
|
|
40
|
+
update-types:
|
|
41
|
+
- version-update:semver-major
|
|
42
|
+
open-pull-requests-limit: 5
|
|
43
|
+
commit-message:
|
|
44
|
+
prefix: deps
|
|
45
|
+
|
|
46
|
+
- package-ecosystem: github-actions
|
|
47
|
+
directory: /
|
|
48
|
+
schedule:
|
|
49
|
+
interval: weekly
|
|
50
|
+
day: monday
|
|
51
|
+
time: '09:00'
|
|
52
|
+
timezone: Etc/UTC
|
|
53
|
+
groups:
|
|
54
|
+
github-actions:
|
|
55
|
+
patterns:
|
|
56
|
+
- '*'
|
|
57
|
+
open-pull-requests-limit: 5
|
|
58
|
+
commit-message:
|
|
59
|
+
prefix: deps
|
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
pull_request:
|
|
5
|
+
push:
|
|
6
|
+
branches:
|
|
7
|
+
- main
|
|
8
|
+
workflow_dispatch:
|
|
9
|
+
|
|
10
|
+
permissions:
|
|
11
|
+
contents: read
|
|
12
|
+
|
|
13
|
+
concurrency:
|
|
14
|
+
group: ci-${{ github.workflow }}-${{ github.ref }}
|
|
15
|
+
cancel-in-progress: true
|
|
16
|
+
|
|
17
|
+
env:
|
|
18
|
+
PYTHONUTF8: '1'
|
|
19
|
+
|
|
20
|
+
jobs:
|
|
21
|
+
quality:
|
|
22
|
+
name: Quality / Ubuntu / Python 3.11
|
|
23
|
+
runs-on: ubuntu-latest
|
|
24
|
+
steps:
|
|
25
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
|
|
26
|
+
with:
|
|
27
|
+
fetch-depth: 0
|
|
28
|
+
|
|
29
|
+
- uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7
|
|
30
|
+
with:
|
|
31
|
+
python-version: '3.11'
|
|
32
|
+
cache: pip
|
|
33
|
+
|
|
34
|
+
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7
|
|
35
|
+
with:
|
|
36
|
+
node-version: '20'
|
|
37
|
+
cache: npm
|
|
38
|
+
|
|
39
|
+
- name: Install dependencies
|
|
40
|
+
run: |
|
|
41
|
+
python -m pip install -e ".[dev,mcp]"
|
|
42
|
+
npm ci
|
|
43
|
+
|
|
44
|
+
- name: Run unit and script tests with coverage
|
|
45
|
+
env:
|
|
46
|
+
ARCGRAPH_REQUIRE_TS: '1'
|
|
47
|
+
run: |
|
|
48
|
+
mkdir -p output/arcgraph
|
|
49
|
+
python -m pytest arcgraph/tests scripts/tests -q --cov=arcgraph --cov-report=xml:output/arcgraph/coverage.xml --cov-report=term --cov-fail-under=92
|
|
50
|
+
|
|
51
|
+
- name: Check formatting and lint
|
|
52
|
+
run: |
|
|
53
|
+
python -m black arcgraph scripts --check
|
|
54
|
+
python -m ruff check arcgraph scripts
|
|
55
|
+
|
|
56
|
+
- name: Build local index
|
|
57
|
+
run: python scripts/arcgraph.py build
|
|
58
|
+
|
|
59
|
+
- name: Run ArcGraph CI
|
|
60
|
+
run: python scripts/arcgraph.py ci
|
|
61
|
+
|
|
62
|
+
- name: Run release gate
|
|
63
|
+
run: python scripts/arcgraph_release_gate.py
|
|
64
|
+
|
|
65
|
+
- name: Upload coverage evidence
|
|
66
|
+
if: always()
|
|
67
|
+
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
|
|
68
|
+
with:
|
|
69
|
+
name: coverage-python-3.11
|
|
70
|
+
path: output/arcgraph/coverage.xml
|
|
71
|
+
if-no-files-found: error
|
|
72
|
+
retention-days: 14
|
|
73
|
+
|
|
74
|
+
test-matrix:
|
|
75
|
+
name: Tests / ${{ matrix.os }} / Python ${{ matrix.python }}
|
|
76
|
+
runs-on: ${{ matrix.os }}
|
|
77
|
+
strategy:
|
|
78
|
+
fail-fast: false
|
|
79
|
+
matrix:
|
|
80
|
+
os:
|
|
81
|
+
- ubuntu-latest
|
|
82
|
+
- windows-latest
|
|
83
|
+
- macos-latest
|
|
84
|
+
python:
|
|
85
|
+
- '3.11'
|
|
86
|
+
- '3.12'
|
|
87
|
+
steps:
|
|
88
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
|
|
89
|
+
|
|
90
|
+
- uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7
|
|
91
|
+
with:
|
|
92
|
+
python-version: ${{ matrix.python }}
|
|
93
|
+
cache: pip
|
|
94
|
+
|
|
95
|
+
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7
|
|
96
|
+
with:
|
|
97
|
+
node-version: '20'
|
|
98
|
+
cache: npm
|
|
99
|
+
|
|
100
|
+
- name: Install dependencies
|
|
101
|
+
run: |
|
|
102
|
+
python -m pip install -e ".[dev,mcp]"
|
|
103
|
+
npm ci
|
|
104
|
+
|
|
105
|
+
- name: Run cross-platform tests
|
|
106
|
+
env:
|
|
107
|
+
ARCGRAPH_REQUIRE_TS: '1'
|
|
108
|
+
run: python -m pytest arcgraph/tests scripts/tests -q
|
|
109
|
+
|
|
110
|
+
package-matrix:
|
|
111
|
+
name: Package / ${{ matrix.os }} / Python ${{ matrix.python }} / MCP ${{ matrix.mcp_line }}
|
|
112
|
+
runs-on: ${{ matrix.os }}
|
|
113
|
+
strategy:
|
|
114
|
+
fail-fast: false
|
|
115
|
+
matrix:
|
|
116
|
+
include:
|
|
117
|
+
- os: ubuntu-latest
|
|
118
|
+
python: '3.11'
|
|
119
|
+
mcp_line: lower
|
|
120
|
+
mcp_spec: mcp==2.0.0
|
|
121
|
+
- os: ubuntu-latest
|
|
122
|
+
python: '3.11'
|
|
123
|
+
mcp_line: latest-2x
|
|
124
|
+
mcp_spec: mcp>=2.0.0,<3.0.0
|
|
125
|
+
- os: windows-latest
|
|
126
|
+
python: '3.12'
|
|
127
|
+
mcp_line: latest-2x
|
|
128
|
+
mcp_spec: mcp>=2.0.0,<3.0.0
|
|
129
|
+
- os: macos-latest
|
|
130
|
+
python: '3.12'
|
|
131
|
+
mcp_line: latest-2x
|
|
132
|
+
mcp_spec: mcp>=2.0.0,<3.0.0
|
|
133
|
+
steps:
|
|
134
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
|
|
135
|
+
with:
|
|
136
|
+
fetch-depth: 0
|
|
137
|
+
|
|
138
|
+
- uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7
|
|
139
|
+
with:
|
|
140
|
+
python-version: ${{ matrix.python }}
|
|
141
|
+
cache: pip
|
|
142
|
+
|
|
143
|
+
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7
|
|
144
|
+
with:
|
|
145
|
+
node-version: '20'
|
|
146
|
+
cache: npm
|
|
147
|
+
|
|
148
|
+
- name: Install package-smoke prerequisites
|
|
149
|
+
run: |
|
|
150
|
+
python -m pip install -e ".[dev]"
|
|
151
|
+
npm ci
|
|
152
|
+
|
|
153
|
+
- name: Build, install, and exercise package artifacts
|
|
154
|
+
run: |
|
|
155
|
+
python -c "from pathlib import Path; Path('output/release').mkdir(parents=True, exist_ok=True)"
|
|
156
|
+
python scripts/arcgraph_package_readiness_smoke.py --mcp-version-spec "${{ matrix.mcp_spec }}" > output/release/package-readiness.json
|
|
157
|
+
|
|
158
|
+
- name: Upload package provenance
|
|
159
|
+
if: always()
|
|
160
|
+
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
|
|
161
|
+
with:
|
|
162
|
+
name: package-readiness-${{ matrix.os }}-py${{ matrix.python }}-${{ matrix.mcp_line }}
|
|
163
|
+
path: output/release/package-readiness.json
|
|
164
|
+
if-no-files-found: error
|
|
165
|
+
retention-days: 14
|
|
166
|
+
|
|
167
|
+
typescript-acceptance:
|
|
168
|
+
name: TypeScript / Node ${{ matrix.node }} / TS ${{ matrix.typescript }}
|
|
169
|
+
runs-on: ubuntu-latest
|
|
170
|
+
strategy:
|
|
171
|
+
fail-fast: false
|
|
172
|
+
matrix:
|
|
173
|
+
include:
|
|
174
|
+
- node: '20'
|
|
175
|
+
typescript: '5.4.5'
|
|
176
|
+
- node: '20'
|
|
177
|
+
typescript: '5.9.3'
|
|
178
|
+
- node: '22'
|
|
179
|
+
typescript: '5.9.3'
|
|
180
|
+
- node: '24'
|
|
181
|
+
typescript: '5.9.3'
|
|
182
|
+
steps:
|
|
183
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
|
|
184
|
+
|
|
185
|
+
- uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7
|
|
186
|
+
with:
|
|
187
|
+
python-version: '3.11'
|
|
188
|
+
cache: pip
|
|
189
|
+
|
|
190
|
+
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7
|
|
191
|
+
with:
|
|
192
|
+
node-version: ${{ matrix.node }}
|
|
193
|
+
cache: npm
|
|
194
|
+
|
|
195
|
+
- name: Install acceptance toolchain
|
|
196
|
+
run: |
|
|
197
|
+
python -m pip install -e ".[dev]"
|
|
198
|
+
npm ci
|
|
199
|
+
npm install --no-save --ignore-scripts typescript@${{ matrix.typescript }}
|
|
200
|
+
|
|
201
|
+
- name: Run formal TypeScript acceptance contract
|
|
202
|
+
env:
|
|
203
|
+
ARCGRAPH_REQUIRE_TS: '1'
|
|
204
|
+
run: |
|
|
205
|
+
python -m pytest -q \
|
|
206
|
+
arcgraph/tests/test_typescript_baseline.py \
|
|
207
|
+
arcgraph/tests/test_typescript_esm_resolution.py \
|
|
208
|
+
arcgraph/tests/test_typescript_package_exports.py \
|
|
209
|
+
arcgraph/tests/test_typescript_conditional_exports.py \
|
|
210
|
+
arcgraph/tests/test_typescript_express_routes.py \
|
|
211
|
+
arcgraph/tests/test_typescript_similarity.py
|
|
212
|
+
|
|
213
|
+
security:
|
|
214
|
+
name: Security / Audit and SBOM
|
|
215
|
+
runs-on: ubuntu-latest
|
|
216
|
+
steps:
|
|
217
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
|
|
218
|
+
|
|
219
|
+
- uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7
|
|
220
|
+
with:
|
|
221
|
+
python-version: '3.12'
|
|
222
|
+
cache: pip
|
|
223
|
+
|
|
224
|
+
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7
|
|
225
|
+
with:
|
|
226
|
+
node-version: '20'
|
|
227
|
+
cache: npm
|
|
228
|
+
|
|
229
|
+
- name: Install security tooling
|
|
230
|
+
run: |
|
|
231
|
+
python -m pip install --upgrade pip setuptools wheel
|
|
232
|
+
python -m pip install -e ".[dev,mcp,security]"
|
|
233
|
+
npm ci
|
|
234
|
+
|
|
235
|
+
- name: Generate CycloneDX SBOM
|
|
236
|
+
run: |
|
|
237
|
+
mkdir -p output/security
|
|
238
|
+
python -m cyclonedx_py environment --output-format JSON --output-file output/security/arcgraph.cdx.json
|
|
239
|
+
|
|
240
|
+
- name: Audit Python dependencies
|
|
241
|
+
run: |
|
|
242
|
+
python -m pip freeze --exclude-editable > output/security/python-audit-requirements.txt
|
|
243
|
+
python -m pip_audit --strict --disable-pip --no-deps --requirement output/security/python-audit-requirements.txt --format json --output output/security/pip-audit.json
|
|
244
|
+
|
|
245
|
+
- name: Audit Node development dependencies
|
|
246
|
+
run: |
|
|
247
|
+
test "$(npx --yes npm@11.12.1 --version)" = "11.12.1"
|
|
248
|
+
npx --yes npm@11.12.1 audit --audit-level=high --json > output/security/npm-audit.json
|
|
249
|
+
|
|
250
|
+
- name: Scan Python source
|
|
251
|
+
run: python -m bandit -c pyproject.toml -r arcgraph scripts -x arcgraph/tests,scripts/tests -f json -o output/security/bandit.json
|
|
252
|
+
|
|
253
|
+
- name: Upload security evidence
|
|
254
|
+
if: always()
|
|
255
|
+
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
|
|
256
|
+
with:
|
|
257
|
+
name: security-evidence
|
|
258
|
+
path: output/security
|
|
259
|
+
if-no-files-found: error
|
|
260
|
+
retention-days: 30
|
|
261
|
+
|
|
262
|
+
ci-gate:
|
|
263
|
+
name: CI Gate
|
|
264
|
+
if: always()
|
|
265
|
+
runs-on: ubuntu-latest
|
|
266
|
+
needs:
|
|
267
|
+
- quality
|
|
268
|
+
- test-matrix
|
|
269
|
+
- package-matrix
|
|
270
|
+
- typescript-acceptance
|
|
271
|
+
- security
|
|
272
|
+
steps:
|
|
273
|
+
- name: Require every CI lane
|
|
274
|
+
env:
|
|
275
|
+
QUALITY_RESULT: ${{ needs.quality.result }}
|
|
276
|
+
TEST_MATRIX_RESULT: ${{ needs['test-matrix'].result }}
|
|
277
|
+
PACKAGE_MATRIX_RESULT: ${{ needs['package-matrix'].result }}
|
|
278
|
+
TYPESCRIPT_ACCEPTANCE_RESULT: ${{ needs['typescript-acceptance'].result }}
|
|
279
|
+
SECURITY_RESULT: ${{ needs.security.result }}
|
|
280
|
+
run: |
|
|
281
|
+
test "$QUALITY_RESULT" = "success"
|
|
282
|
+
test "$TEST_MATRIX_RESULT" = "success"
|
|
283
|
+
test "$PACKAGE_MATRIX_RESULT" = "success"
|
|
284
|
+
test "$TYPESCRIPT_ACCEPTANCE_RESULT" = "success"
|
|
285
|
+
test "$SECURITY_RESULT" = "success"
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
__pycache__/
|
|
2
|
+
.DS_Store
|
|
3
|
+
arcgraph/_build_provenance.json
|
|
4
|
+
*.py[cod]
|
|
5
|
+
.pytest_cache/
|
|
6
|
+
.ruff_cache/
|
|
7
|
+
.mypy_cache/
|
|
8
|
+
.coverage
|
|
9
|
+
coverage.xml
|
|
10
|
+
htmlcov/
|
|
11
|
+
build/
|
|
12
|
+
dist/
|
|
13
|
+
# Approved generated-output fixture used by TypeScript framework scanner tests.
|
|
14
|
+
!arcgraph/tests/fixtures/typescript_frameworks/dist/
|
|
15
|
+
!arcgraph/tests/fixtures/typescript_frameworks/dist/**
|
|
16
|
+
*.egg-info/
|
|
17
|
+
.venv/
|
|
18
|
+
node_modules/
|
|
19
|
+
output/
|
|
20
|
+
.agents/
|
|
21
|
+
.codex/
|
|
22
|
+
viz/graph_data.json
|
|
23
|
+
|
|
24
|
+
# Private working material stays under docs/_internal and is never committed.
|
|
25
|
+
docs/_internal/
|
|
26
|
+
|
|
27
|
+
# Generated/runtime/local artifact filename patterns
|
|
28
|
+
*.log
|
|
29
|
+
*.tmp
|
|
30
|
+
*.db
|
|
31
|
+
*.sqlite
|
|
32
|
+
*.sqlite3
|
|
33
|
+
|
|
34
|
+
# Local operator instructions are not part of the public source tree.
|
|
35
|
+
/AGENTS.md
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
# Contributor Covenant Code of Conduct
|
|
2
|
+
|
|
3
|
+
## Our Pledge
|
|
4
|
+
|
|
5
|
+
We as members, contributors, and leaders pledge to make participation in our
|
|
6
|
+
community a harassment-free experience for everyone, regardless of age, body
|
|
7
|
+
size, visible or invisible disability, ethnicity, sex characteristics, gender
|
|
8
|
+
identity and expression, level of experience, education, socio-economic status,
|
|
9
|
+
nationality, personal appearance, race, caste, color, religion, or sexual
|
|
10
|
+
identity and orientation.
|
|
11
|
+
|
|
12
|
+
We pledge to act and interact in ways that contribute to an open, welcoming,
|
|
13
|
+
diverse, inclusive, and healthy community.
|
|
14
|
+
|
|
15
|
+
## Our Standards
|
|
16
|
+
|
|
17
|
+
Examples of behavior that contributes to a positive environment:
|
|
18
|
+
|
|
19
|
+
- Demonstrating empathy and kindness toward other people
|
|
20
|
+
- Being respectful of differing opinions, viewpoints, and experiences
|
|
21
|
+
- Giving and gracefully accepting constructive feedback
|
|
22
|
+
- Accepting responsibility and apologizing to those affected by our mistakes,
|
|
23
|
+
and learning from the experience
|
|
24
|
+
- Focusing on what is best not just for us as individuals, but for the overall
|
|
25
|
+
community
|
|
26
|
+
|
|
27
|
+
Examples of unacceptable behavior:
|
|
28
|
+
|
|
29
|
+
- The use of sexualized language or imagery, and sexual attention or advances
|
|
30
|
+
of any kind
|
|
31
|
+
- Trolling, insulting or derogatory comments, and personal or political attacks
|
|
32
|
+
- Public or private harassment
|
|
33
|
+
- Publishing others' private information, such as a physical or email address,
|
|
34
|
+
without their explicit permission
|
|
35
|
+
- Other conduct which could reasonably be considered inappropriate in a
|
|
36
|
+
professional setting
|
|
37
|
+
|
|
38
|
+
## Enforcement Responsibilities
|
|
39
|
+
|
|
40
|
+
ArcGraph is currently a beta-stage, single-maintainer project. Until a
|
|
41
|
+
dedicated moderation team exists, the project maintainer is responsible for
|
|
42
|
+
clarifying and enforcing these standards and will take appropriate and fair
|
|
43
|
+
corrective action in response to any behavior deemed inappropriate, threatening,
|
|
44
|
+
offensive, or harmful.
|
|
45
|
+
|
|
46
|
+
## Scope
|
|
47
|
+
|
|
48
|
+
This Code of Conduct applies within all community spaces associated with this
|
|
49
|
+
project (issues, pull requests, discussions, and any other project
|
|
50
|
+
communication channel), and also applies when an individual is officially
|
|
51
|
+
representing the project in public spaces.
|
|
52
|
+
|
|
53
|
+
## Enforcement
|
|
54
|
+
|
|
55
|
+
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
|
56
|
+
reported to the maintainer at
|
|
57
|
+
[security@glyphevo.com](mailto:security@glyphevo.com) — the same address used
|
|
58
|
+
for security reports; note "Code of Conduct" in the subject so it is triaged
|
|
59
|
+
correctly. All complaints will be reviewed and investigated promptly and
|
|
60
|
+
fairly.
|
|
61
|
+
|
|
62
|
+
The maintainer is obligated to respect the privacy and security of the
|
|
63
|
+
reporter of any incident. There is no formal enforcement committee at this
|
|
64
|
+
stage of the project; reports are handled directly by the maintainer.
|
|
65
|
+
|
|
66
|
+
## Enforcement Guidelines
|
|
67
|
+
|
|
68
|
+
The maintainer will follow these Community Impact Guidelines in determining
|
|
69
|
+
the consequences for any action deemed in violation of this Code of Conduct:
|
|
70
|
+
|
|
71
|
+
### 1. Correction
|
|
72
|
+
|
|
73
|
+
**Community Impact**: Use of inappropriate language or other behavior deemed
|
|
74
|
+
unprofessional or unwelcome.
|
|
75
|
+
|
|
76
|
+
**Consequence**: A private, written warning, providing clarity around the
|
|
77
|
+
nature of the violation and an explanation of why the behavior was
|
|
78
|
+
inappropriate.
|
|
79
|
+
|
|
80
|
+
### 2. Warning
|
|
81
|
+
|
|
82
|
+
**Community Impact**: A violation through a single incident or series of
|
|
83
|
+
actions.
|
|
84
|
+
|
|
85
|
+
**Consequence**: A warning with consequences for continued behavior. No
|
|
86
|
+
interaction with the people involved for a specified period of time. Further
|
|
87
|
+
violations may lead to a temporary or permanent ban.
|
|
88
|
+
|
|
89
|
+
### 3. Temporary Ban
|
|
90
|
+
|
|
91
|
+
**Community Impact**: A serious violation of community standards, including
|
|
92
|
+
sustained inappropriate behavior.
|
|
93
|
+
|
|
94
|
+
**Consequence**: A temporary ban from any sort of interaction or public
|
|
95
|
+
communication with the project for a specified period of time.
|
|
96
|
+
|
|
97
|
+
### 4. Permanent Ban
|
|
98
|
+
|
|
99
|
+
**Community Impact**: Demonstrating a pattern of violation of community
|
|
100
|
+
standards, including sustained inappropriate behavior, harassment of an
|
|
101
|
+
individual, or aggression toward or disparagement of classes of individuals.
|
|
102
|
+
|
|
103
|
+
**Consequence**: A permanent ban from any sort of public interaction within
|
|
104
|
+
the project.
|
|
105
|
+
|
|
106
|
+
## Attribution
|
|
107
|
+
|
|
108
|
+
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
|
|
109
|
+
version 2.1, available at
|
|
110
|
+
[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1].
|
|
111
|
+
|
|
112
|
+
[homepage]: https://www.contributor-covenant.org
|
|
113
|
+
[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# Contributing To ArcGraph
|
|
2
|
+
|
|
3
|
+
ArcGraph is a beta-stage, local-first code semantic graph engine.
|
|
4
|
+
Contributions should preserve the current public-safe boundaries:
|
|
5
|
+
source-checkout install, local execution, accurate package claims (name only
|
|
6
|
+
the versions [RELEASE_NOTES.md](RELEASE_NOTES.md) lists as published on PyPI),
|
|
7
|
+
and no claims of a separate MCP distribution.
|
|
8
|
+
|
|
9
|
+
## Before Opening A Pull Request
|
|
10
|
+
|
|
11
|
+
- Keep changes focused and explain the user-facing behavior or evidence improved.
|
|
12
|
+
- Run the [local checks](#local-checks) before requesting review.
|
|
13
|
+
- On a clean committed branch, run
|
|
14
|
+
`python scripts/arcgraph_release_gate.py` and
|
|
15
|
+
`python scripts/arcgraph_package_readiness_smoke.py`; dirty source is rejected
|
|
16
|
+
so artifact evidence cannot be confused with uncommitted work.
|
|
17
|
+
- GitHub Actions runs the `CI` workflow. A passing run is evidence only for the
|
|
18
|
+
commit it ran on; check the run for the exact commit before treating the
|
|
19
|
+
Ubuntu/Windows/macOS matrix as passing.
|
|
20
|
+
- Do not commit generated output, `dist`, `node_modules`, caches, smoke outputs,
|
|
21
|
+
credentials, private repository contents, or local process notes.
|
|
22
|
+
- Keep docs honest about current maturity. Describe ArcGraph as beta
|
|
23
|
+
software until its release status actually changes.
|
|
24
|
+
|
|
25
|
+
## Local Checks
|
|
26
|
+
|
|
27
|
+
These are the contributor-level part of the required local gate. Run them from
|
|
28
|
+
a source checkout. `arcgraph docs release-checklist` is the authoritative,
|
|
29
|
+
current list and also covers the steps only a release needs.
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
export ARCGRAPH_REQUIRE_TS=1
|
|
33
|
+
npm ci
|
|
34
|
+
python -m pip install --upgrade pip setuptools wheel
|
|
35
|
+
python -m pip install -e ".[dev,mcp,security]"
|
|
36
|
+
python -m pytest arcgraph/tests scripts/tests -q
|
|
37
|
+
python -m black arcgraph scripts --check
|
|
38
|
+
python -m ruff check arcgraph scripts
|
|
39
|
+
python -m bandit -c pyproject.toml -r arcgraph scripts -x arcgraph/tests,scripts/tests
|
|
40
|
+
mkdir -p output/security
|
|
41
|
+
python -m pip freeze --exclude-editable > output/security/python-audit-requirements.txt
|
|
42
|
+
python -m pip_audit --strict --disable-pip --no-deps --requirement output/security/python-audit-requirements.txt
|
|
43
|
+
npx --yes npm@11.12.1 audit --audit-level=high --json
|
|
44
|
+
python scripts/arcgraph.py build
|
|
45
|
+
python scripts/arcgraph.py ci
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
`ARCGRAPH_REQUIRE_TS=1` makes the TypeScript golden tests fail instead of
|
|
49
|
+
skipping when Node or the compiler API is unavailable. The commands are
|
|
50
|
+
POSIX-shell syntax; on Windows PowerShell set it with
|
|
51
|
+
`$env:ARCGRAPH_REQUIRE_TS = "1"` and translate `export`, `mkdir -p` and the `>`
|
|
52
|
+
redirect.
|
|
53
|
+
|
|
54
|
+
## Security
|
|
55
|
+
|
|
56
|
+
Do not open public issues for vulnerabilities or sensitive data exposure. Follow
|
|
57
|
+
the private reporting path in `SECURITY.md`.
|
|
58
|
+
|
|
59
|
+
## Code Of Conduct
|
|
60
|
+
|
|
61
|
+
Participation in this project is governed by [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md).
|