oc-box 0.1.23__py3-none-any.whl

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.
oc_box/CONTRIBUTING.md ADDED
@@ -0,0 +1,102 @@
1
+ # Contributing
2
+
3
+ Use the full Git history: the release identity is `0.1.N+gHASH`, with the commit
4
+ count as N. Changes should keep mainline OpenCode unmodified and preserve MCPs,
5
+ formatters, language servers, plugins, and the host/container storage boundary.
6
+
7
+ ## Checks
8
+
9
+ Python 3.10+ and stdlib are sufficient for unit tests. The mainline smoke test
10
+ also needs Git and OpenCode (integration checked with 1.19.5):
11
+
12
+ ```sh
13
+ python3 -B -m unittest discover -s tests -v
14
+ python3 -B tests/smoke_mainline.py
15
+ python3 -B tools/build_docs.py --check
16
+ git diff --check
17
+ ```
18
+
19
+ Tests use isolated temporary app data. Mainline model/MCP/LSP/formatter fixtures
20
+ are local and bounded. These checks do not replace live host-side Podman tests.
21
+ Do not run host lifecycle tests from inside the project's running container.
22
+
23
+ ## Manuals
24
+
25
+ Edit `docs/cli.md` when command-line behavior changes. Generate committed man,
26
+ Texinfo, and Info files with GNU makeinfo installed:
27
+
28
+ ```sh
29
+ python3 -B tools/build_docs.py
30
+ ```
31
+
32
+ End-user installation copies prebuilt manuals and must not require build tools.
33
+ Optional man/Info rendering checks run when groff and GNU info are available.
34
+ Info output is byte-reproducible with the same makeinfo version. Different
35
+ Texinfo releases may change their banner, wrapping, typography, and tag offsets;
36
+ tests verify matching navigation across versions rather than requiring identical
37
+ binary output from every distribution's documentation toolchain.
38
+
39
+ ## Source and release hygiene
40
+
41
+ - Stage intended files explicitly. Never commit auth files, tokens, private keys,
42
+ session databases/exports, registry metadata, caches, or sandbox placeholders.
43
+ - Review Git history as well as the working tree before a first public push.
44
+ With Gitleaks installed, run `gitleaks git --log-opts=--all --redact .` and
45
+ `gitleaks dir --redact .`. Scan reports belong outside the repository.
46
+ - Shell calls should use argument arrays. Forward credentials through the
47
+ process environment, never command-line arguments or credential-bearing URLs.
48
+ - Add regression tests for boundary changes, import compatibility, lifecycle
49
+ preservation, and actual command behavior rather than implementation mirrors.
50
+ - Keep examples portable and use synthetic session IDs.
51
+ - Disclose AI assistance honestly. Check each hosting service's policy before
52
+ publication; a GPL license does not override a service's content rules.
53
+
54
+ Original contributions are licensed GPL-3.0-or-later. Retain LICENSE and NOTICE.
55
+
56
+ ## Python packages and PyPI releases
57
+
58
+ The wheel contains a namespaced `oc_box` package, runtime helper scripts,
59
+ prebuilt manuals, license/notice, and immutable source metadata. It has no
60
+ third-party runtime Python dependencies. GitHub source/curl installations stay
61
+ supported in parallel. Do not make a pip-managed launcher install through the
62
+ GitHub self-updater or write a global wrapper as an installation side effect.
63
+
64
+ Build in isolation (uv uses an ephemeral environment; no project/system pip
65
+ install is needed):
66
+
67
+ ```sh
68
+ uv run --no-project --with build --with twine python -m build
69
+ uv run --no-project --with twine python -m twine check dist/*
70
+ python3 tools/check_package.py dist
71
+ ```
72
+
73
+ The last check installs only the wheel into a temporary virtual environment,
74
+ tests CLI commands/resources, and ensures package upgrades do not invoke the
75
+ GitHub installer. Standard build produces the wheel from the sdist to verify
76
+ that it works without Git. Do not publish a dirty working tree.
77
+
78
+ PyPI rejects local `+gHASH` version suffixes: the distribution version is
79
+ `0.1.N` from full-history commit count, and packaged `build-info.json` keeps
80
+ `0.1.N+gHASH` plus the full commit. Each selected release needs a unique version;
81
+ ordinary commits remain on GitHub without requiring a PyPI upload.
82
+
83
+ Trusted Publisher configuration in PyPI must match:
84
+
85
+ - Project: `oc-box` (pending publisher until its first successful publication).
86
+ - GitHub owner/repository: `groopcd/oc-box`.
87
+ - Workflow filename: `publish.yml`.
88
+ - GitHub environment: `pypi`.
89
+
90
+ No long-lived PyPI upload token belongs in GitHub or this repository. Only the
91
+ publish job receives `id-token: write`, and it downloads already-tested artifacts
92
+ rather than executing package build code with publishing credentials. GitHub
93
+ Actions are pinned by commit. The user must create/own the PyPI account and
94
+ configure the matching publisher; pending publishers do not reserve names.
95
+
96
+ First run the workflow with its `publish` input false to verify a build-only
97
+ run. A published GitHub release named `v0.1.N` (matching that commit's count)
98
+ builds, validates, and publishes to PyPI. Alternatively manually dispatch
99
+ `publish.yml` on a reviewed commit with `publish` true. Environment protection
100
+ rules may require owner approval. Do not publish from untrusted pull requests.
101
+ The repository's CI builds/verifies packages on Python 3.10 and 3.13; the full
102
+ mainline smoke fixture remains part of local verification with OpenCode.