@colony2/gitvend 0.0.4 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -16,7 +16,7 @@ The gateway supports GitHub and GitHub Enterprise-compatible endpoints. It needs
16
16
  no database or GitHub App. Agents connect over HTTPS; GitHub's own access and
17
17
  branch rules continue to apply.
18
18
 
19
- [Set up and use the gateway →](https://github.com/colony-2/gitvend/blob/v0.0.4/docs/gateway.md)
19
+ [Set up and use the gateway →](https://github.com/colony-2/gitvend/blob/v0.0.5/docs/gateway.md)
20
20
 
21
21
  ## JobDB plugin
22
22
 
@@ -29,7 +29,7 @@ The plugin keeps its signing key on the JobDB host, and the gateway verifies the
29
29
  resulting tokens with the matching public key. Workers receive neither the
30
30
  signing key nor the upstream GitHub token.
31
31
 
32
- [Set up the JobDB plugin →](https://github.com/colony-2/gitvend/blob/v0.0.4/docs/jobdb-secret-provider.md)
32
+ [Set up the JobDB plugin →](https://github.com/colony-2/gitvend/blob/v0.0.5/docs/jobdb-secret-provider.md)
33
33
 
34
34
  ## Install
35
35
 
@@ -52,13 +52,13 @@ that includes `jobdb-gitvend-secret-provider` when using the plugin; older packa
52
52
  may contain only `gitvend`.
53
53
 
54
54
  For a container deployment, use the published image with the
55
- [Docker Compose guide](https://github.com/colony-2/gitvend/blob/v0.0.4/docs/docker-compose.md).
55
+ [Docker Compose guide](https://github.com/colony-2/gitvend/blob/v0.0.5/docs/docker-compose.md).
56
56
 
57
57
  ## Guides
58
58
 
59
- - [Gateway setup, Git usage, and operations](https://github.com/colony-2/gitvend/blob/v0.0.4/docs/gateway.md)
60
- - [Repository creation controls](https://github.com/colony-2/gitvend/blob/v0.0.4/docs/gateway.md#repository-creation-defaults)
61
- - [JobDB plugin setup and issuer configuration](https://github.com/colony-2/gitvend/blob/v0.0.4/docs/jobdb-secret-provider.md)
62
- - [Permission syntax](https://github.com/colony-2/gitvend/blob/v0.0.4/docs/permission-syntax.md)
63
- - [Docker Compose deployment](https://github.com/colony-2/gitvend/blob/v0.0.4/docs/docker-compose.md)
64
- - [Developer guide: source builds, tests, and releases](https://github.com/colony-2/gitvend/blob/v0.0.4/docs/development.md)
59
+ - [Gateway setup, Git usage, and operations](https://github.com/colony-2/gitvend/blob/v0.0.5/docs/gateway.md)
60
+ - [Repository creation controls](https://github.com/colony-2/gitvend/blob/v0.0.5/docs/gateway.md#repository-creation-defaults)
61
+ - [JobDB plugin setup and issuer configuration](https://github.com/colony-2/gitvend/blob/v0.0.5/docs/jobdb-secret-provider.md)
62
+ - [Permission syntax](https://github.com/colony-2/gitvend/blob/v0.0.5/docs/permission-syntax.md)
63
+ - [Docker Compose deployment](https://github.com/colony-2/gitvend/blob/v0.0.5/docs/docker-compose.md)
64
+ - [Developer guide: source builds, tests, and releases](https://github.com/colony-2/gitvend/blob/v0.0.5/docs/development.md)
@@ -83,6 +83,30 @@ Git features. See the [design](git-proxy-design.md) for requirements and tradeof
83
83
  [c2r](https://github.com/colony-2/c2r) informed the provisioning approach; Gitvend
84
84
  uses a direct GitHub adapter and copies no c2r source.
85
85
 
86
+ ### Git interoperability regression coverage
87
+
88
+ Linux and macOS CI run the full race suite and vet, including actual Git clients
89
+ and `git-http-backend`. The test jobs print the Git version they exercised.
90
+ The local backend alone does not reproduce every GitHub response format; tests
91
+ also inject the upload-pack service preamble observed from GitHub.
92
+
93
+ | Behavior | Regression coverage |
94
+ | --- | --- |
95
+ | Upload-pack discovery | Bare v2 and service-header-prefixed v2; real discovery, clone and fetch; malformed headers and downgrades rejected. |
96
+ | Push transport | Twelve real-Git scenarios: full/shallow checkout × new/existing branch × small/default-buffer-overflow/configured-buffer-overflow pack. Each attempts a denied push before an allowed one and verifies the remote ref. |
97
+ | First push and upstream refusal | A large first push provisions and populates a new repository; shallow pushes to an upstream that refuses missing history remain rejected and do not create refs. |
98
+ | HTTP authentication probes | Flush-only requests with fixed-length, chunked and gzip bodies; JWT and write authorization required; no upstream calls or repository creation. |
99
+ | Shallow push metadata | Preserve declarations before ref commands and leave pack bytes unread; reject malformed or misplaced declarations and enforce command byte/ref limits. |
100
+ | Malformed probes | Reject truncation, read errors, trailing commands, additional flushes and pack data. |
101
+
102
+ When a production compatibility failure is reported, first add a test that
103
+ reproduces its wire format or real-client behavior and fails on the existing code.
104
+ For parser changes, include both accepted traffic and malformed/unauthorized
105
+ variants, then seed the wire fuzzer with the new valid format. Statement coverage
106
+ alone cannot establish protocol compatibility. These tests use local upstreams;
107
+ they do not replace a deployment smoke test against GitHub with the operator's
108
+ actual credentials and repository settings.
109
+
86
110
  ## Release automation
87
111
 
88
112
  The [release workflow](../.github/workflows/release.yaml) follows [c2j's release pattern](https://github.com/colony-2/c2j/blob/main/.github/workflows/release.yaml). Successful pushes to `main` in the `colony-2` organization run the test suite, automatically bump and push a version tag (patch by default), build both executables for four platforms, and publish GitHub release archives and checksums. It then publishes `@colony2/gitvend` to npm with `gitvend` and `jobdb-gitvend-secret-provider` commands after installing and smoke-testing the installed commands against the published assets. It also publishes Linux amd64/arm64 container images to `ghcr.io/colony-2/gitvend` with the release tag and `latest`, using `GITHUB_TOKEN` with package-write permission.
package/docs/gateway.md CHANGED
@@ -355,6 +355,12 @@ jq -c 'select(.audit.operation == "git-receive-pack") | .audit' audit.jsonl
355
355
 
356
356
  Push audit distinguishes `accepted`, `rejected`, `partial` and `unknown`; HTTP 200 alone is not success. Creation outcomes are `created`, `reconciled`, `configuration_failed`, `rejected` or `unknown` and do not claim that a subsequent push succeeded. A crash can leave an admission with no final record. Log delivery is best-effort, with retention and durability handled by your logging infrastructure. Inspect the remote refs before retrying an interrupted push; gitvend never retries a push automatically.
357
357
 
358
+ Large pushes can begin with a flush-only HTTP authentication probe. These are
359
+ logged as `git-receive-pack-probe`; an accepted probe means the gateway accepted
360
+ the credential and found writable refs. It does not verify upstream permissions,
361
+ create a repository, or update any refs. The subsequent push is authorized and
362
+ audited separately as `git-receive-pack`.
363
+
358
364
  ### Multiple instances
359
365
 
360
366
  Run any number of instances behind the same HTTPS endpoint with matching configuration, trusted keys and credentials. No shared disk, database, distributed lock or sticky session is required. Configuration/key rotations must reach each instance; a reload on one instance does not update others. `max_concurrent` and request limits apply per instance. If you need fleet-wide rate limits or creation budgets, enforce them outside gitvend. A metrics export endpoint is not implemented.
@@ -430,7 +436,9 @@ legacy single-dash long flags. For credential helpers, Git appends the final ope
430
436
 
431
437
  ## Compatibility
432
438
 
433
- Supported object format is SHA-1. SSH, Git LFS, Git protocol v0/v1 fetch, signed push certificates, push options, named shallow exclusions, ref-in-want, offloaded pack/bundle URLs and provider-managed ref namespaces are rejected or not advertised. Branch writes can include workflow files; CI execution and secrets remain governed by the forge's configuration. GitHub branch rules continue to apply to the shared upstream identity.
439
+ Supported object format is SHA-1. Pushes from shallow clones and streamed large
440
+ pushes are supported; the upstream still validates object connectivity and can
441
+ reject a push with missing history. SSH, Git LFS, Git protocol v0/v1 fetch, signed push certificates, push options, named shallow exclusions, ref-in-want, offloaded pack/bundle URLs and provider-managed ref namespaces are rejected or not advertised. Branch writes can include workflow files; CI execution and secrets remain governed by the forge's configuration. GitHub branch rules continue to apply to the shared upstream identity.
434
442
 
435
443
  Use a disposable repository to confirm your upstream token, organization creation
436
444
  policy, workflow permissions and GitHub Enterprise version before rolling out to
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@colony2/gitvend",
3
- "version": "0.0.4",
3
+ "version": "0.0.5",
4
4
  "description": "Git HTTPS gateway with signed repository and branch permissions",
5
5
  "license": "UNLICENSED",
6
6
  "homepage": "https://github.com/colony-2/gitvend",