Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
159 commits
Select commit Hold shift + click to select a range
f87ea8c
fix: replay an active topic ban without promoting recovery
LIghtJUNction Sep 28, 2026
ed12fe8
test: nest the banned topic so the fixture keeps a single root resource
LIghtJUNction Sep 28, 2026
f2ebc09
chore: mark the rewrite preview as 1.0.0a1
LIghtJUNction Sep 28, 2026
3490750
feat(security): accept only console-imported root-signed backup retir…
LIghtJUNction Sep 28, 2026
4bfeece
test: integrate recovery slices and reproduce current-authority gaps …
LIghtJUNction Sep 28, 2026
1ca13fd
fix: reject stale Root authority and replay bans without inherited ex…
LIghtJUNction Sep 28, 2026
f317920
fix: verify active root certificate with existing primitives
LIghtJUNction Sep 28, 2026
0e4dbe7
fix: correct root certificate verification call syntax
LIghtJUNction Sep 28, 2026
6ea463d
test(client): verify a dependency-clean wheel and four signed transports
LIghtJUNction Sep 28, 2026
8692ad6
test: define market ownership and protected posting contracts
LIghtJUNction Sep 28, 2026
d0d7f4f
ci: assemble and audit the exact market ownership extraction
LIghtJUNction Sep 28, 2026
f92390f
refactor(market): own shared records posting and managed delivery ind…
github-actions[bot] Sep 28, 2026
65b7330
ci: remove market assembly tooling and preserve verified red evidence
LIghtJUNction Sep 28, 2026
93d864b
ci(client): apply the reviewed dependency-boundary patch on its fixed…
LIghtJUNction Sep 28, 2026
2dd5e9b
test(git): lock protocol ownership and shared publication contracts
LIghtJUNction Sep 28, 2026
649a85d
fix(ci): commit client dependency metadata in the repository's origin…
LIghtJUNction Sep 28, 2026
5f56bbe
refactor(client): isolate shared protocol helpers and client-only dep…
github-actions[bot] Sep 28, 2026
ee26dec
test(git): characterize supported smart fetch without enabling dumb HTTP
LIghtJUNction Sep 28, 2026
e7f4da1
ci: assemble audited Git boundaries without executing project code lo…
LIghtJUNction Sep 28, 2026
3ae9f8e
merge: verify client boundary against the single executor and session…
LIghtJUNction Sep 28, 2026
730780a
merge: retain the latest supplemental database regression gate
LIghtJUNction Sep 28, 2026
b1b6628
refactor(git): separate HTTP adaptation and share guarded publication
github-actions[bot] Sep 28, 2026
08852c0
ci: remove completed Git boundary assembly tooling
LIghtJUNction Sep 29, 2026
b413382
merge: integrate recovery current-authority checks with current main
LIghtJUNction Sep 29, 2026
cb0a57f
merge: integrate shared market and ledger boundaries
LIghtJUNction Sep 29, 2026
40689c6
merge: integrate independently installable client boundary
LIghtJUNction Sep 29, 2026
2fe2f2c
merge: integrate readonly hosting runtime and deployment identity
LIghtJUNction Sep 29, 2026
bf423d6
merge: integrate protocol-neutral Git repository and publication boun…
LIghtJUNction Sep 29, 2026
bc7c212
fix: allow achievement restart after round expiry
LIghtJUNction Sep 29, 2026
91c347a
fix: expose console backup retirement with checked file boundaries
LIghtJUNction Sep 29, 2026
4eee070
merge: retain recovery authority fences and expose guarded retirement…
LIghtJUNction Sep 29, 2026
00b1745
fix(tui): render frozen client search snippets safely
LIghtJUNction Sep 29, 2026
edee1e2
test(mail): exercise isolated TLS SMTP socket outcomes
LIghtJUNction Sep 29, 2026
5e3525b
fix(registry): reject dangling resource and capability references
LIghtJUNction Sep 29, 2026
7dfa254
refactor(registry): give operations ownership of rule dependencies
LIghtJUNction Sep 29, 2026
1ab30e6
fix: sign and attribute custodial achievement confirmations
LIghtJUNction Sep 29, 2026
63417ac
fix: validate legacy offer catalog before new redemption
LIghtJUNction Sep 29, 2026
9517ef3
fix: prevent replayed topic bans from reviving old admin membership
LIghtJUNction Sep 29, 2026
9d6c73e
fix(bootstrap): normalize explicit rule relocation declarations
LIghtJUNction Sep 29, 2026
7c6e7f4
feat(market): add explicit buyer acceptance checkout contract
LIghtJUNction Sep 29, 2026
2b6ba8e
fix: map Unicode search snippets to original text offsets
LIghtJUNction Sep 29, 2026
680297f
fix: link plugin manifests to owned bootstrap features
LIghtJUNction Sep 29, 2026
b15d879
feat: filter search by current revision and source version
LIghtJUNction Sep 29, 2026
b65d329
fix(tools): mount managed Python runtime for real bubblewrap execution
LIghtJUNction Sep 29, 2026
26c2d3c
fix: reject ambiguous base anchors during unified rebase
LIghtJUNction Sep 29, 2026
d7519db
Register immutable template and tool contracts alongside runtime reso…
LIghtJUNction Sep 29, 2026
60f0a55
ci: install bubblewrap for real tool isolation acceptance
LIghtJUNction Sep 29, 2026
9178d80
fix: verify reused blob bytes before publishing revisions
LIghtJUNction Sep 29, 2026
d271103
feat(bootstrap): support pinned release rule retirement preserving hi…
LIghtJUNction Sep 29, 2026
2c16fe3
feat: replay pinned typed policy restrictions without promoting recovery
LIghtJUNction Sep 29, 2026
6c1ea44
merge: integrate client boundary with verified hosting and token-deli…
LIghtJUNction Sep 29, 2026
c3cf58b
fix: recheck current visibility in collaboration reads
LIghtJUNction Sep 29, 2026
acc3e0a
feat: filter search relations with current endpoint visibility
LIghtJUNction Sep 29, 2026
edce2f6
merge: retain independently verified hosting main history
LIghtJUNction Sep 29, 2026
5dd99b8
merge: retain current client PR validation head
LIghtJUNction Sep 29, 2026
a55b7c0
feat: add resource backed requests offers and work checkpoints
LIghtJUNction Sep 29, 2026
5d5ea76
merge: preserve market owners across current core, client and hosting…
LIghtJUNction Sep 29, 2026
77cd846
feat: expose versioned legacy market projections and shared escrow re…
LIghtJUNction Sep 29, 2026
b310a7f
feat: register file operations on shared resource contracts
LIghtJUNction Sep 29, 2026
9e34e6e
feat: preserve legacy SQLite snapshots in inert offline archive
LIghtJUNction Sep 29, 2026
a0dde32
test: reject invalid legacy attachments and excessive row counts
LIghtJUNction Sep 29, 2026
bee0bc8
fix: enforce plugin lifecycle and queued operation availability
LIghtJUNction Sep 29, 2026
5ba3d03
feat: add typed search scopes and explicit title selection
LIghtJUNction Sep 29, 2026
f982a0d
feat: add pinned text proposals and collaboration client surfaces
LIghtJUNction Sep 29, 2026
620d9da
feat: add resource backed target watches and live event inbox projection
LIghtJUNction Sep 29, 2026
0e1efd5
fix: stop watch delivery when captured operation version disappears
LIghtJUNction Sep 29, 2026
925c91f
test: verify watch CLI lifecycle over real signed HTTP transport
LIghtJUNction Sep 29, 2026
faba8cf
feat: expose opt-in spelling hints from visible resource names
LIghtJUNction Sep 29, 2026
1ba2a51
style: remove trailing blank line in market compatibility
LIghtJUNction Sep 29, 2026
b3de5c1
fix: preserve special security bits during recovery ACL restriction
LIghtJUNction Sep 29, 2026
1f35232
merge: retain latest market PR integration history
LIghtJUNction Sep 29, 2026
ce497d6
feat: route CLI search options through versioned signed contracts
LIghtJUNction Sep 29, 2026
93ff2ff
feat(diagnostics): verify every accepted configuration field
LIghtJUNction Sep 29, 2026
ab482c8
fix(bounty): verify accounting projections against published terms
LIghtJUNction Sep 29, 2026
79a7660
fix: deduplicate overlapping authorized domain webhooks
LIghtJUNction Sep 29, 2026
81bff92
feat: migrate old resource paths after current authorization
LIghtJUNction Sep 29, 2026
1d959c8
test: cover conditional blob reads across live authorization sources
LIghtJUNction Sep 29, 2026
952b288
feat: sign and audit custodial achievement display updates
LIghtJUNction Sep 29, 2026
9825296
feat: reconcile pinned certificate and resource authority under quara…
LIghtJUNction Sep 29, 2026
ae857f8
feat: explicitly save immutable query descriptors with live authority
LIghtJUNction Sep 29, 2026
6406870
fix: support migrated paths in isolated hosting readers
LIghtJUNction Sep 29, 2026
ca025ee
feat: import legacy content into private v4 resources with Root approval
LIghtJUNction Sep 29, 2026
d13516c
feat: back new local offers with signed Listing revisions
LIghtJUNction Sep 29, 2026
9f7874e
feat: match saved read queries through pinned watch contracts
LIghtJUNction Sep 29, 2026
ffb8e27
test: verify saved watch source revocation expiry and tag matching
LIghtJUNction Sep 29, 2026
cdb5bd9
ci: diagnose real bubblewrap child startup on Ubuntu
LIghtJUNction Sep 29, 2026
8a3290f
ci: load distro bubblewrap user namespace AppArmor profile
LIghtJUNction Sep 29, 2026
34fcd52
ci: load packaged extra profile without unrelated service restarts
LIghtJUNction Sep 29, 2026
45470b5
ci: require real sandbox preflight with scoped AppArmor profile
LIghtJUNction Sep 29, 2026
65cf582
feat: authorize legacy content redirects in explicit migration namespace
LIghtJUNction Sep 29, 2026
0d4737f
feat: explicitly import legacy offers with pinned local approval
LIghtJUNction Sep 29, 2026
dd7007e
feat: exercise real Git publication and fetch in isolated selftest
LIghtJUNction Sep 29, 2026
e9a3732
ci: avoid duplicate full-suite runs for pull request pushes
LIghtJUNction Sep 29, 2026
dbbe32f
feat: add honor bootstrap samples and real diagnostic checks
LIghtJUNction Sep 29, 2026
6360070
fix: preserve JSON Root trust path compatibility and rotation recovery
LIghtJUNction Sep 29, 2026
fa76ade
test: reproduce unsafe transfer status cursors in cloud CI
LIghtJUNction Sep 29, 2026
887e93c
fix(recovery): invalidate loaded runtimes after authority promotion
LIghtJUNction Sep 29, 2026
9212831
fix: archive cancelled watches so listing and event scans stay bounded
LIghtJUNction Sep 29, 2026
8800587
fix: verify existing binary blob before reusing it for a new upload
LIghtJUNction Sep 29, 2026
210e7b4
test: verify cancelled watch exclusion with bounded churn
LIghtJUNction Sep 29, 2026
769c124
fix: validate transfer status cursors after current authorization
LIghtJUNction Sep 29, 2026
f691438
feat: verify legacy identity proofs and archive inert records
LIghtJUNction Sep 29, 2026
846c6b5
feat: preserve fixed Git refs and import legacy repositories privately
LIghtJUNction Sep 29, 2026
cbd4f4f
test: reproduce zero-progress client download resume in cloud CI
LIghtJUNction Sep 29, 2026
99aa2a8
fix: preserve authorized typed search scopes in saved queries
LIghtJUNction Sep 29, 2026
32f1021
feat: settle explicitly signed entitlement redemptions through native…
LIghtJUNction Sep 29, 2026
517f7e2
fix: reject invalid client chunk sizes before resumable I/O
LIghtJUNction Sep 29, 2026
8ecad77
fix: let hosting compare declared rule retirements instead of crashing
LIghtJUNction Sep 29, 2026
e76b4c7
fix(http): enforce read effects before resolving migrated aliases
LIghtJUNction Sep 29, 2026
c9f23e2
feat: verify complete independent recovery state before local promotion
LIghtJUNction Sep 29, 2026
48cb58e
fix: bind recovery promotion to current configuration policy
LIghtJUNction Sep 29, 2026
b795dce
fix: require persisted runtime fence before recovery resume
LIghtJUNction Sep 29, 2026
92322f4
fix: reject hidden recovery schema authority and scope pending receipts
LIghtJUNction Sep 29, 2026
d08b9f7
fix: describe explicit recovery ban lifts without deny-only claims
LIghtJUNction Sep 29, 2026
caebdc9
fix: make webhook deduplication independent of database collation
LIghtJUNction Sep 29, 2026
4c6f153
merge: retain bounded transfer status cursor regression history
LIghtJUNction Sep 29, 2026
a517682
merge: retain client chunk size validation regression history
LIghtJUNction Sep 29, 2026
89990eb
Merge independent transfer cursor and client chunk-size fixes for joi…
LIghtJUNction Sep 29, 2026
2eb1ea3
fix: isolate corrupt watch records without swallowing transaction fai…
LIghtJUNction Sep 29, 2026
fc031f1
test: capture integration read-effect ordering and webhook overlap re…
LIghtJUNction Sep 29, 2026
4a857b7
feat: make new default orders controlled revision-backed resources
LIghtJUNction Sep 29, 2026
b32a93d
fix: pin current market recovery schema across PostgreSQL catalogs
LIghtJUNction Sep 29, 2026
5f19c7b
test(auth): preserve independent share across move and source loss
LIghtJUNction Sep 29, 2026
52aad25
feat: approve new-root legacy imports at local console
LIghtJUNction Sep 29, 2026
fbe5175
test: exercise deferred commit and post-import storage failures
LIghtJUNction Sep 29, 2026
de27644
test: verify signed read pagination across four dispatchers
LIghtJUNction Sep 29, 2026
1abf945
docs: deploy locked server artifacts with isolated hosting and new root
LIghtJUNction Sep 29, 2026
1956b84
ci: match PostgreSQL recovery clients to version 16 services
LIghtJUNction Sep 29, 2026
2d2a808
test: verify isolated real sshd revocation and multi-ref abort
LIghtJUNction Sep 29, 2026
de3cd87
merge: retain independent integration regression evidence
LIghtJUNction Sep 29, 2026
739c894
feat: diagnose private DM lifecycle in isolated selftest
LIghtJUNction Sep 29, 2026
8de59cf
docs: inventory finite design contracts and bounded diagnostic evidence
LIghtJUNction Sep 29, 2026
6c34336
feat: add real content editing selftest vector
LIghtJUNction Sep 29, 2026
cfdb211
feat(selftest): verify isolated transfer state and readonly boundaries
LIghtJUNction Sep 29, 2026
bf8ff81
test: distinguish runtime fence reads from forbidden resource resolution
LIghtJUNction Sep 29, 2026
fae57b9
feat(errors): add safe messages without rewriting historical receipts
LIghtJUNction Sep 29, 2026
53f80f0
docs: resolve design member aliases and identify concrete contract gaps
LIghtJUNction Sep 29, 2026
00a9818
feat: register and exercise bounded feature diagnostics
LIghtJUNction Sep 29, 2026
f067942
fix: keep direct conversations in the installed namespace
LIghtJUNction Sep 29, 2026
ff57e66
docs: make empty feature samples explicit in bootstrap metadata
LIghtJUNction Sep 29, 2026
12e829a
fix(read): remove collation-dependent page endpoints and retain recov…
LIghtJUNction Sep 29, 2026
86623aa
ci: read database collation from catalog and update integration handoff
LIghtJUNction Sep 29, 2026
d637c41
test(collaboration): reproduce unbounded legacy lease materialization…
LIghtJUNction Sep 29, 2026
63bafb4
test(read): assert empty pages through the immutable result wire cont…
LIghtJUNction Sep 29, 2026
fd4cde5
test(collaboration): preserve exact unbounded-query evidence outside …
LIghtJUNction Sep 29, 2026
70d46ce
fix(collaboration): bound legacy lease scans and retain read paginati…
LIghtJUNction Sep 29, 2026
759ba54
test(read): isolate recovery freshness checks from business reads
LIghtJUNction Sep 29, 2026
8e5c914
test(read): cover keyset paging across operations and collations
LIghtJUNction Sep 29, 2026
f3bd758
ci(read): fold keyset and recovery checks into integration regressions
LIghtJUNction Sep 29, 2026
6540c79
ci(read): verify database locale through pg_database
LIghtJUNction Sep 29, 2026
f3258bf
ci(read): remove superseded standalone regression workflow
LIghtJUNction Sep 29, 2026
f304bcf
test(read): remove superseded compact pagination coverage
LIghtJUNction Sep 29, 2026
dd441ea
test(collaboration): expose unbounded Resource list queries through s…
LIghtJUNction Sep 29, 2026
bf1a166
fix(collaboration): bound Resource work-list scans and preserve the l…
LIghtJUNction Sep 29, 2026
bf07d48
fix(workers): admit same-tool jobs against a shared running limit
LIghtJUNction Sep 29, 2026
4d3f3c0
feat: add read-only /@user/receipts projection of stored OperationRes…
LIghtJUNction Sep 29, 2026
84071b8
Merge #183: tool concurrency admission
LIghtJUNction Sep 29, 2026
8b4c807
Merge #184: subject receipt projections
LIghtJUNction Sep 29, 2026
9b3142d
merge: integrate main and #182 before mainline merge
LIghtJUNction Sep 29, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 8 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
name: Rewrite contracts
on:
push:
branches: [main]
pull_request:
workflow_dispatch:
permissions:
Expand All @@ -18,7 +19,7 @@ jobs:
shard: [0, 1, 2, 3]
services:
postgres:
# Ubuntu runner provides pg_dump 16; its client must not be older than the server.
# Recovery jobs explicitly install matching PostgreSQL 16 client tools.
image: postgres:16
env:
POSTGRES_USER: msgtest
Expand Down Expand Up @@ -60,12 +61,17 @@ jobs:
- name: Install required recovery and ingress test tools
run: |
sudo apt-get update -qq
sudo apt-get install -y -qq age nginx openssl git-lfs
sudo env NEEDRESTART_MODE=l apt-get install -y -qq postgresql-client-16 age nginx openssl git-lfs bubblewrap apparmor-profiles
echo /usr/lib/postgresql/16/bin >> "$GITHUB_PATH"
age --version
nginx -v
openssl version
bwrap --version
sudo apparmor_parser -r /usr/share/apparmor/extra-profiles/bwrap-userns-restrict
- name: Install the complete dependency set
run: python -m pip install -e '.[dev]'
- name: Check real tool isolation before running shards
run: python scripts/check_tool_sandbox.py
- name: Compile all new modules
run: python -m compileall -q src
- name: Run core, business and security tests
Expand Down
72 changes: 72 additions & 0 deletions .github/workflows/client-boundary.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
name: Client boundary
on:
push:
branches: ['fix/client-boundary-*']
pull_request:
paths:
- 'src/msg/**'
- 'pyproject.toml'
- 'tests/test_client_boundary.py'
- 'scripts/check_client_install.py'
- '.github/workflows/client-boundary.yml'
workflow_dispatch:
permissions:
contents: read
concurrency:
group: client-boundary-${{ github.ref }}
cancel-in-progress: true
jobs:
installed-client:
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- uses: actions/checkout@v7
with:
persist-credentials: false
- uses: actions/setup-python@v7
with:
python-version: '3.15'
allow-prereleases: true
cache: pip
- name: Record tested source
run: |
mkdir -p artifacts
python - <<'PY'
import json, os, pathlib, subprocess
def git(*args):
return subprocess.check_output(['git', *args], text=True).strip()
pathlib.Path('artifacts/source.json').write_text(json.dumps({
'commit': git('rev-parse', 'HEAD'), 'tree': git('rev-parse', 'HEAD^{tree}'),
'run_id': os.environ['GITHUB_RUN_ID'], 'event': os.environ['GITHUB_EVENT_NAME'],
}, indent=2) + '\n')
PY
- name: Install full development dependencies
run: python -m pip install -e '.[dev]'
- name: Verify helper ownership, exact proof context and fail-closed assembly
run: python -m pytest tests/test_client_boundary.py --junitxml=artifacts/client-boundary.xml
- name: Build the distributable wheel and source archive
if: always()
run: |
python -m build
python scripts/check_package_artifacts.py dist
- name: Install a clean client-only wheel outside the checkout
if: always()
run: |
python -m venv "$RUNNER_TEMP/msg-client-only"
client_python="$RUNNER_TEMP/msg-client-only/bin/python"
"$client_python" -m pip install dist/*.whl
"$client_python" -m pip check
mkdir -p "$RUNNER_TEMP/msg-client-outside"
cd "$RUNNER_TEMP/msg-client-outside"
"$RUNNER_TEMP/msg-client-only/bin/msg" --help > "$GITHUB_WORKSPACE/artifacts/client-help.txt"
"$RUNNER_TEMP/msg-client-only/bin/msgd" --help > "$GITHUB_WORKSPACE/artifacts/daemon-help.txt"
"$client_python" -I "$GITHUB_WORKSPACE/scripts/check_client_install.py" --minimal-install \
> "$GITHUB_WORKSPACE/artifacts/client-install.json"
"$client_python" -m pip list --format=json > "$GITHUB_WORKSPACE/artifacts/client-packages.json"
- uses: actions/upload-artifact@v4
if: always()
with:
name: client-boundary
path: |
artifacts/
dist/
76 changes: 76 additions & 0 deletions .github/workflows/client-part-bytes.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
name: Client chunk size regressions
on:
push:
paths:
- '.github/workflows/client-part-bytes.yml'
- 'src/msg/client.py'
- 'tests/test_client*.py'
- 'tests/read_only_evidence.py'
pull_request:
paths:
- '.github/workflows/client-part-bytes.yml'
- 'src/msg/client.py'
- 'tests/test_client*.py'
- 'tests/read_only_evidence.py'
workflow_dispatch:
permissions:
contents: read
concurrency:
group: client-part-bytes-${{ github.event.pull_request.head.repo.full_name || github.repository }}-${{ github.head_ref || github.ref_name }}
cancel-in-progress: true
jobs:
regression:
runs-on: ubuntu-latest
timeout-minutes: 10
services:
postgres:
image: postgres:16
env:
POSTGRES_USER: msgtest
POSTGRES_PASSWORD: msgtest
POSTGRES_DB: postgres
ports:
- 5432:5432
options: >-
--health-cmd "pg_isready -U msgtest"
--health-interval 10s --health-timeout 5s --health-retries 5
env:
MSG_TEST_POSTGRES_URL_TEMPLATE: postgresql://msgtest:msgtest@127.0.0.1:5432/{database}
steps:
- uses: actions/checkout@v7
with:
persist-credentials: false
- uses: actions/setup-python@v7
with:
python-version: '3.15'
allow-prereleases: true
cache: pip
- name: Record exact source identity
run: |
mkdir -p artifacts
python - <<'PY'
import json, os, platform, subprocess
from pathlib import Path
def git(*args):
return subprocess.check_output(['git', *args], text=True).strip()
Path('artifacts/source.json').write_text(json.dumps({
'commit': git('rev-parse', 'HEAD'), 'tree': git('rev-parse', 'HEAD^{tree}'),
'run_id': os.environ['GITHUB_RUN_ID'], 'attempt': os.environ['GITHUB_RUN_ATTEMPT'],
'python': platform.python_version()}, indent=2) + '\n')
PY
- name: Install real cryptographic and database test dependencies
run: |
sudo apt-get update -qq
sudo env NEEDRESTART_MODE=l apt-get install -y -qq age
python -m pip install -e '.[dev]'
- name: Run invalid-size and cross-protocol resume regressions
run: >-
python -m pytest -q
tests/test_client_part_bytes.py tests/test_client.py
--junitxml=artifacts/client-part-bytes.xml
- uses: actions/upload-artifact@v4
if: always()
with:
name: client-part-bytes-evidence
path: artifacts/
if-no-files-found: error
72 changes: 72 additions & 0 deletions .github/workflows/collaboration-list-bounds.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
name: Bounded collaboration Resource reads
on:
push:
branches: [fix/collaboration-list-bounds-20260929]
pull_request:
paths:
- '.github/workflows/collaboration-list-bounds.yml'
- 'src/msg/plugins/collaboration_resources.py'
- 'tests/test_collaboration_list_bounds.py'
- 'tests/test_collaboration_list_deadline.py'
workflow_dispatch:
permissions:
contents: read
concurrency:
group: work-list-${{ github.event.pull_request.head.repo.full_name || github.repository }}-${{ github.head_ref || github.ref_name }}
cancel-in-progress: true
jobs:
regression:
runs-on: ubuntu-latest
timeout-minutes: 10
services:
postgres:
image: postgres:16
env:
POSTGRES_USER: msgtest
POSTGRES_PASSWORD: msgtest
POSTGRES_DB: postgres
ports: ['5432:5432']
options: >-
--health-cmd "pg_isready -U msgtest -d postgres"
--health-interval 10s --health-timeout 5s --health-retries 5
env:
MSG_TEST_POSTGRES_URL_TEMPLATE: postgresql://msgtest:msgtest@127.0.0.1:5432/{database}
steps:
- uses: actions/checkout@v7
with:
persist-credentials: false
- name: Record exact source
run: |
mkdir -p artifacts
python3 - <<'PY'
import json, os, subprocess
from pathlib import Path
def git(*args):
return subprocess.check_output(['git', *args], text=True).strip()
Path('artifacts/source.json').write_text(json.dumps({
'commit': git('rev-parse', 'HEAD'), 'tree': git('rev-parse', 'HEAD^{tree}'),
'run_id': os.environ['GITHUB_RUN_ID'], 'attempt': os.environ['GITHUB_RUN_ATTEMPT']}, indent=2) + '\n')
PY
- uses: actions/setup-python@v7
with:
python-version: '3.15'
allow-prereleases: true
cache: pip
- name: Install real dependencies
run: |
sudo apt-get update -qq
sudo env NEEDRESTART_MODE=l apt-get install -y -qq age
python -m pip install -e '.[dev]'
- name: Run real bounded work-record regressions
run: >-
python -m pytest -q
tests/test_collaboration_list_bounds.py tests/test_collaboration_list_deadline.py
tests/test_collaboration_resources.py tests/test_collaboration_resource_surfaces.py
tests/test_proposals.py
--junitxml=artifacts/work-list-regressions.xml
- uses: actions/upload-artifact@v4
if: always()
with:
name: collaboration-list-evidence
path: artifacts/
if-no-files-found: error
75 changes: 75 additions & 0 deletions .github/workflows/git-transport-boundaries.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
name: Git transport boundary contracts
on:
push:
branches: [fix/git-transport-boundaries-20260929]
workflow_dispatch:
permissions:
contents: read
concurrency:
group: git-transport-boundaries-${{ github.ref }}
cancel-in-progress: false
jobs:
contracts:
runs-on: ubuntu-latest
timeout-minutes: 20
services:
postgres:
image: postgres:16
env:
POSTGRES_USER: msgtest
POSTGRES_PASSWORD: msgtest
POSTGRES_DB: postgres
ports: ['5432:5432']
options: >-
--health-cmd "pg_isready -U msgtest"
--health-interval 5s --health-timeout 5s --health-retries 10
valkey:
image: valkey/valkey:9.0.6
ports: ['6379:6379']
options: >-
--health-cmd "valkey-cli ping"
--health-interval 5s --health-timeout 5s --health-retries 10
env:
MSG_TEST_POSTGRES_URL_TEMPLATE: postgresql://msgtest:msgtest@127.0.0.1:5432/{database}
MSG_TEST_VALKEY_URL: redis://127.0.0.1:6379/0
steps:
- uses: actions/checkout@v7
with:
persist-credentials: false
- uses: actions/setup-python@v7
with:
python-version: '3.15'
allow-prereleases: true
cache: pip
- name: Install actual Git, LFS and cryptographic test tools
run: |
sudo apt-get update -qq
sudo apt-get install -y -qq age git-lfs
git --version
git lfs version
python -m pip install -e '.[dev]'
- name: Record exact source
env:
SOURCE_SHA: ${{ github.sha }}
run: |
mkdir -p artifacts
test "$(git rev-parse HEAD)" = "$SOURCE_SHA"
python - <<'PY'
import json,os,subprocess
from pathlib import Path
git=lambda *args:subprocess.check_output(['git',*args],text=True).strip()
Path('artifacts/source.json').write_text(json.dumps({'commit':git('rev-parse','HEAD'),
'tree':git('rev-parse','HEAD^{tree}'),'event_sha':os.environ['SOURCE_SHA'],
'dirty':bool(git('status','--porcelain'))},indent=2)+'\n')
PY
- name: Verify ownership and unchanged real Git reads
run: python -m pytest tests/test_git_transport_boundaries.py --junitxml=artifacts/git-boundaries.xml
- name: Preserve real HTTP, SSH, bundle, LFS and publication fences
run: |
python -m pytest tests/test_git_http_push.py tests/test_native_git_read_only.py tests/test_git_lfs.py tests/test_lfs_shared_gc_quota.py tests/test_ssh_rss.py tests/test_extensions.py tests/test_storage_layout.py tests/test_effect_completion_fencing.py tests/issue_78_80/test_lfs_integrity.py tests/issue_78_80/test_lfs_migration_contract.py --junitxml=artifacts/git-regressions.xml
- uses: actions/upload-artifact@v4
if: always()
with:
name: git-transport-boundaries-${{ github.sha }}
path: artifacts/
if-no-files-found: error
Loading
Loading