Verify PostgreSQL source recovery and preserve tracing context across hooks
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
Reject generated-only commits / generated-commit-guard (push) Successful in 8s

This commit is contained in:
codex 2026-10-18 03:29:54 +02:00
parent 1b8dc0a8fd
commit 83078392c0
119 changed files with 24438 additions and 0 deletions

View file

@ -0,0 +1,200 @@
{
"objective": "Finish what you found missing and finish CUST-WP-0080",
"status": "active",
"observed_at": "2026-10-18T01:27:45.628916+00:00",
"full_scope_baseline": {
"path": "docs/changes/netkingdom-target-2026-10-18/cust80-completion-r1/completion-audit.json",
"sha256": "sha256:9bdee9a790db598956fe35d5954137bb4582c9f3810d2392f7ef3236c369b065",
"all_requirements_retained": true
},
"normative_architecture": {
"path": "docs/netkingdom-target-security-architecture.md",
"sha256": "ec2079be18c7cdb8a1e4fdbd22131c08c83721d7a1bf18b4802bc5e229520f35"
},
"acceptance_gates": [
{
"id": "TSA-01",
"required_outcome": "Every inventoried privileged PEP authenticates its decision",
"required_evidence": "PEP denominator; admitted signer/channel; forged, altered, wrong-key/pin, unsigned/downgrade, expired and rotation refusals. Start SECRETS-WP-0014.",
"status": "incomplete",
"completion_evidence": []
},
{
"id": "TSA-02",
"required_outcome": "Exact approval produces one bounded protected operation",
"required_evidence": "SECRETS-WP-0013/RPF-WP-0035-T12 native effect; Approval T01/T05 issuer/tenant provenance; wrong actor/tenant/body, expiry, replay and unavailable refusal.",
"status": "incomplete",
"completion_evidence": []
},
{
"id": "TSA-03",
"required_outcome": "Crashes preserve uncertainty and cleanup",
"required_evidence": "Actual ledger restart/concurrency, consumed-before-effect failure, target reconciliation, scoped cleanup and revocation evidence; no blind replay.",
"status": "incomplete",
"completion_evidence": []
},
{
"id": "TSA-04",
"required_outcome": "First reusable browser case is accepted",
"required_evidence": "NK-WP-0048 and named Mason/Warden/KeyCape adapters; independent native structure, sign-in/denial, delivery, revocation and rollback.",
"status": "incomplete",
"completion_evidence": []
},
{
"id": "TSA-05",
"required_outcome": "Human and browser consumers can use the delivered identity",
"required_evidence": "KEY-WP-0040/U08 real-factor recovery; User Engine journey; NK-WP-0050 and CUST-WP-0080-T05 human/agent Playwright acceptance.",
"status": "incomplete",
"completion_evidence": []
},
{
"id": "TSA-06",
"required_outcome": "Actual agent and runner authority is bounded",
"required_evidence": "CUST-WP-0073/GLAS-WP-0012 admitted runtime read-denial/tool-effect proof; Forge/Platform per-job credential and repository-workflow abuse tests.",
"status": "incomplete",
"completion_evidence": []
},
{
"id": "TSA-07",
"required_outcome": "Credential lifecycle is inventoried and simplified",
"required_evidence": "Current owner/consumer denominator, unknown/orphan findings, native-identity elimination candidates; sampled replacement/adoption/old-refusal and deletion semantics. G04/G09/G12.",
"status": "incomplete",
"completion_evidence": []
},
{
"id": "TSA-08",
"required_outcome": "Recovery is independent and measured",
"required_evidence": "NK-WP-0049 plus platform/root owners; isolated recovery with ordinary issuer unavailable, restore/reconnect/audit continuity and measured RTO/RPO. G08/G11.",
"status": "incomplete",
"completion_evidence": []
},
{
"id": "TSA-09",
"required_outcome": "Security effects have independently reconciled evidence",
"required_evidence": "Admitted source/class inventory, atomic outbox, receiver readback, lag/duplicate/boundary accounting and missing-class findings. Approval/Audit/Tenant/Secrets owners.",
"status": "incomplete",
"completion_evidence": []
},
{
"id": "TSA-10",
"required_outcome": "Source and delivery controls cover declared entry paths",
"required_evidence": "FORGE-WP-0006/RMGR-WP-0021: denominator, SSH/HTTP/UI/new repo/import/mirror coverage, required checks/provenance, private synthetic finding through resolution.",
"status": "incomplete",
"completion_evidence": []
},
{
"id": "TSA-11",
"required_outcome": "Discovery remains accurate",
"required_evidence": "All reviewed IDs exactly once, owner/index parity, usable source links, current limits/version aliases, drift checks and package-family disposition. Reuse/Repo Manager/provider owners.",
"status": "incomplete",
"completion_evidence": []
},
{
"id": "TSA-12",
"required_outcome": "Improvement operates without repeated manual polling",
"required_evidence": "CUST-WP-0079/Activity accepted schedule, unassisted firing, checkpoint and changed-state notifications; adopted cadence runtime/receiver receipts; owner change and native remeasurement.",
"status": "incomplete",
"completion_evidence": []
},
{
"id": "TSA-13",
"required_outcome": "Shared adapters reduce per-consumer implementation",
"required_evidence": "Producer-format cross-language fixtures, two real consumers, version compatibility, denied-path parity, upgrades and rollback; no second PDP.",
"status": "incomplete",
"completion_evidence": []
},
{
"id": "TSA-14",
"required_outcome": "Minimal profiles are independently reusable",
"required_evidence": "Version/provider lock, dependency and optional-provider declaration, provider adapters, second clean installation, complete positive/negative journeys and upgrade/recovery instructions.",
"status": "incomplete",
"completion_evidence": []
},
{
"id": "TSA-15",
"required_outcome": "Optimization improves measured operations",
"required_evidence": "Baseline and repeat measurements of onboarding time/touches, p50/p95 decision/effect latency, scanner throughput/failure, resources/headroom and owner effort with unchanged control coverage.",
"status": "incomplete",
"completion_evidence": []
},
{
"id": "TSA-16",
"required_outcome": "Governance and exceptions remain truthful",
"required_evidence": "Existing SEC-DSM ledger and close-down controls reconciled to exact evidence; real authority for changes, explicit residual promotions, preserved deferrals and no invented owner assent.",
"status": "incomplete",
"completion_evidence": []
}
],
"sec_dsm_requirements": {
"path": "docs/evidence/2026-10-12-netkingdom-security/sec-dsm-requirement-ledger.json",
"sha256": "sha256:ad81f7186ada04aa1cc410932fc8669d69dc2232f3c0be00657b17f3aa3a8184",
"count": 116,
"status_counts": {
"unverified": 84,
"incomplete": 12,
"reference": 20
},
"closure_status_unchanged": true
},
"gap_ids": [
"G01",
"G02",
"G03",
"G04",
"G05",
"G06",
"G07",
"G08",
"G09",
"G10",
"G11",
"G12",
"G13"
],
"separate_required_deliverables": [
"G01-G13 current closure evidence or already applicable approved exceptions",
"SEC-DSM requirement ledger reconciled with exact evidence",
"T05 real human and agent Playwright acceptance and supported discovery",
"Second real consumer and clean installation proves reuse",
"Residual handoffs before workplan finish; no required work left only in prose"
],
"source_progress": {
"packet": "docs/changes/netkingdom-target-2026-10-18/forgejo-postgres-source-r1",
"producer_source_commit": "git:ca0cb75729a63c9288b7333382d0fa3eb1e8c9a3",
"consumer_owner_commit": "git:308e83fcfbf9ec98dbe6b0286cbe8ec7be8899b3",
"consumer_paths": 40,
"patch_sha256": "sha256:feb1079399a43989742ae0a946c1ada50113d1821e6541f97f0b5592ee1fc20c",
"postgreSQL_test_subtest_passes": 37,
"database_schema_profiles": [
"default",
"explicit-public",
"named"
],
"separate_client_crash_recovery": true,
"actual_database_server_restart_recovery": true,
"controlled_missing_lock_and_private_marker_counterexamples": true,
"following_query_hook_context_panic_corrected": true,
"selected_composed_passes_including_subtests": 94,
"source_skips": 0,
"release": {
"frontend_and_static_backend": "passed",
"release_version": "11.0.3+cust80.feb10793",
"binary_sha256": "sha256:92efb26614d3fca22c400920d92c4cd022e32ab86c1f562f60699ab5f750cd28",
"embedded_assets_exact": 2234,
"actual_release_CLI_checks": 48,
"exact_local_OCI_exports": 2,
"manifest": "sha256:9d127b0a75d3d53b1598e7f380dce29f23f42c2e69056fdfc9a42122d98c41c7",
"native_admission": false
},
"independent_owner_assent": false,
"production_database": false,
"native_gates_closed": 0
},
"current_work": "Current authenticated operation/inverse sessions and evidence; exclusion of all application/Helm/release writers; private journal custody/retention; ongoing HTTP/API/Git/SSH authorization; exact owner and native admission. All sixteen gates, G01-G13 and 116 SEC-DSM entries remain in scope.",
"workplan_finished": false,
"goal_complete": false,
"preceding_audit": {
"path": "docs/changes/netkingdom-target-2026-10-18/cust80-completion-r2/completion-audit.json",
"sha256": "sha256:001ede40ad6d7cadcfc575a101828f782f65ea0c75e6a5e0f6b0afe761420b0d"
}
}

View file

@ -0,0 +1,88 @@
# Forgejo PostgreSQL source verification and tracing context correction
This packet verifies the actual composed Forgejo 11.0.3 source on a disposable
PostgreSQL 16.14 instance. It retains the source correction, failed setup and
test attempts, controlled counterexamples, exact sandbox/command receipts and
complete rebuilt release evidence. Apps commit `308e83fc` integrates the new
40-path source patch and build lock. Independent owner review and operational
admission remain open.
The actual production engine initialization and registered model schemas run
under default, explicit-public and named schemas. OAuth configuration values use
the actual application type. All 37 PostgreSQL test/subtest results pass:
create/reconcile/inverse, exact raw restoration, unchanged source retention,
private drift refusal, local/external account-link refusal, unexpected trigger
rollback, raw SQL writer exclusion on all four protected tables, concurrent
preparation and private driver-error diagnostics. A PostgreSQL trigger places
private synthetic configuration in its driver error; the application's actual
slow/error/trace hooks and returned operation error suppress that configuration.
An unmarked query provides a positive diagnostic control.
The diagnostics test exposed a real hook-composition crash. XORM 1.3.9 passes
the same ContextHook to each BeforeProcess hook without feeding the previous
returned context into it. A hook after tracing could therefore discard the task
context and make tracing's AfterProcess panic. The correction publishes the
new task context into ContextHook as well as returning it. This preserves the
incoming private-query marker and ordinary context values. Actual SQLite query
success/failure and private/ordinary trace cases cover the corrected composition.
The six focused DB checks and all 94 selected composed package results pass
without skips. The test-only PostgreSQL tag adds no runtime route or authority.
Separate client processes prepare an intent, die immediately after the actual
source INSERT, reconcile the rolled-back prepared state, and confirm an apply.
The actual PostgreSQL server then restarts with the same synthetic volume.
Further fresh processes reconcile the committed apply, perform the inverse and
verify the reverted journal and source absence. This is transaction/recovery
mechanics evidence, not a real initiating principal, current inverse authority,
signed evidence/outbox or a deployed-database acceptance receipt.
Controlled source copies independently remove the PostgreSQL table lock and
the private-query marker. Both fail their intended tests in all three schema
profiles. Those expected counterexamples are separate from successful normal
runs; the canonical runtime source is not weakened. See
`controlled-counterexamples.json` and `source-equivalence.json`.
The first two container setup attempts failed because the image's initialization
script explicitly clears PGHOST and requires its default socket. The first
suite also exposed an incomplete user fixture; its replacement uses the actual
user model. The initial tracing regression had an incorrect AddHook API call.
The first combined run reused an already-consumed file-replacement fixture;
the final run provisions fresh read-only and writable-alias fixtures. All
original failures remain retained. None is counted as a source success.
The database has no TCP listener, published port or network. Only its exact
synthetic Unix socket is exposed to the network/PID-isolated test process.
The image is immutable and recorded; the workload is limited to one CPU and
512 MiB. Local trust authentication is solely a disposable fixture, not a
credential-custody proof. Exact labeled containers and volumes from all three
setup attempts were removed; cleanup receipts are retained.
For reproduction, use a new prepared workspace from the companion release
recipe, explicit public module/build caches, and unused attempt/workspace names.
`database_runtime.py start --attempt N` creates the owned database fixture.
`run_postgres.py build --source-workspace ... --module-cache ... --go-cache ...`
compiles the real test binary, and `suite` / `combined-regressions` execute the
normal checks. Supply the same `--runtime-attempt N` and test `--workspace`.
The recovery actions are `prepare`, `crash` (expected process exit 73),
`recover-prepared`, server `restart`, `recover-applied`, and `recover-inverse`.
The optional build controls are `omit-postgres-lock` and `omit-private-context`;
their suite failures must match the recorded target tests. Finish with exact
owned `database_runtime.py cleanup --attempt N`. Existing receipts and trial
directories refuse overwrite. The early fixed-path receipt replay is retained;
the final combined run exercises the explicit-workspace interface.
The new patch independently replays all 40 postimages from the pinned official
archive. The complete frontend/static release builds; all 2,234 embedded assets
are exact and all 48 actual CLI/SQLite subprocess checks pass on its binary.
Two fresh no-cache local OCI exports reproduce identical archive, manifest,
config and index. Base layers and rootless runtime settings remain exact.
This is one source build and two exports. No image is loaded, pushed or deployed.
Published asset digests have explicit `sha256:` types; their derivation restores
the runtime's original manifest byte for byte. Scanner rules are unchanged.
Existing T08/T34/T42 still require current authenticated operation/inverse
sessions, exclusion of every application/Helm/release writer, private journal
reader/backup custody, retention and native deployed-database acceptance. T07's
chart/private-mount admission and T09/T43's ongoing HTTP/API/Git/SSH authorization
remain open. All sixteen target gates and the full SEC-DSM ledger remain in
scope; no native gate is closed by these source checks.

View file

@ -0,0 +1,36 @@
"""Publish explicitly typed public asset digests, retaining byte-exact evidence."""
from pathlib import Path
import hashlib
import json
HERE = Path(__file__).resolve().parent
path = HERE / 'release-evidence/embedded-files.json'
raw = path.read_bytes()
records = json.loads(raw)
work = Path('/tmp/custodian-forgejo-release-r4')
verification = json.loads((HERE / 'release-evidence/verification.json').read_text())
sha = lambda data: hashlib.sha256(data).hexdigest()
assert sha(raw) == verification['embedded_file_manifest_sha256']
assert raw == (work / 'embedded-files.json').read_bytes()
for name, value in records.items():
assert sha((work / 'source' / name).read_bytes()) == value, name
assert sha((work / 'embedded-extracted' / name).read_bytes()) == value, name
published = (json.dumps({name: 'sha256:' + value for name, value in records.items()},
indent=2, sort_keys=True) + '\n').encode()
restored = (json.dumps({name: value.removeprefix('sha256:')
for name, value in json.loads(published).items()},
indent=2, sort_keys=True) + '\n').encode()
assert restored == raw
path.write_bytes(published)
(HERE / 'release-evidence/embedded-manifest-derivation.json').write_text(json.dumps({
'scope': 'Public generated/embedded asset SHA-256 identifiers only',
'assets_verified_against_both_actual_source_and_extracted_binary': len(records),
'runtime_original_manifest_sha256': 'sha256:' + sha(raw),
'published_manifest_sha256': 'sha256:' + sha(published),
'original_byte_exact_reconstructed': True,
'reconstruction': 'Remove the sha256: value prefix and serialize with json.dumps(indent=2, sort_keys=True) plus one newline.',
'runtime_verification_receipt_preserved': True,
'scanner_rules_or_allowlists_changed': False,
'credential_values_transformed': False,
}, indent=2) + '\n')
print(json.dumps({'public_asset_digests_verified': len(records), 'original_byte_exact_reconstructed': True}))

View file

@ -0,0 +1,7 @@
{
"paths_verified": 40,
"all_postimages_exact": true,
"patch_sha256": "sha256:feb1079399a43989742ae0a946c1ada50113d1821e6541f97f0b5592ee1fc20c",
"workspace": "/tmp/custodian-forgejo-pg-composite-k93fv80k",
"native_changes": false
}

View file

@ -0,0 +1,219 @@
{
"schema": "custodian.forgejo-composed-source.v1",
"status": "source-tested PostgreSQL/context correction; complete release rebuild pending",
"archive_sha256": "1ddd8c926ca07d40436897971458ace7dcf1d3496a0813ab9e0d869edef2365c",
"forgejo_version": "11.0.3",
"producer_source_commit": "ca0cb75729a63c9288b7333382d0fa3eb1e8c9a3",
"issuer_source_commit": "git:d803e9282a47b49daf930fb905312fa5104c0ace",
"patch_sha256": "feb1079399a43989742ae0a946c1ada50113d1821e6541f97f0b5592ee1fc20c",
"files": [
{
"path": "cmd/admin_auth_oauth.go",
"before_sha256": "d5faee30ffbb9a560256c92a0e05e652b79e95e016448cbac7dbb6ad0fdad937",
"after_sha256": "d718d817c46f6393488a9c5a894b7535640cd0ec1a1ae3f72f8411a2bbec3b38"
},
{
"path": "cmd/admin_auth_oauth_secret_linux.go",
"before_sha256": null,
"after_sha256": "6741961f1df67c1afbf34c796e549425f0e04a0d0678c6eedb05f66d4754c64b"
},
{
"path": "cmd/admin_auth_oauth_secret_linux_test.go",
"before_sha256": null,
"after_sha256": "b28c2369dfab9bf2ca48e707e01b4394a36c8be5490cfe5bb658017bb626c4b2"
},
{
"path": "cmd/admin_auth_oauth_secret_other.go",
"before_sha256": null,
"after_sha256": "54056c989a4757e73db0252130e7c16bf16f5ec8eaaca2468f019ba2ef5c532d"
},
{
"path": "go.mod",
"before_sha256": "652162a4a95c6d1c349d2a8c0b514def5abd837f001137b77b7b3f4a0f162d00",
"after_sha256": "130138c4c3ecc29fa0d7f1e2eef0589ddf3b06071f3cc0448aa7b2326847653a"
},
{
"path": "models/auth/source_operation.go",
"before_sha256": null,
"after_sha256": "ef1b07ef6cf454015d00cde8588835f5118d829da91eb0303d37184859345a31"
},
{
"path": "models/auth/source_operation_internal_test.go",
"before_sha256": null,
"after_sha256": "af0f424d3a1fd2b29793b64baa1fa07284fee7ea0b7721c503db4efac0d871cb"
},
{
"path": "models/auth/source_operation_postgres_export_test.go",
"before_sha256": null,
"after_sha256": "b9d1553144766b15c408295b87506106935abf4ed61460598b58dc81825e808d"
},
{
"path": "models/auth/source_operation_postgres_test.go",
"before_sha256": null,
"after_sha256": "4a37504e5af00580d114ef1bed5cb32e09e4ec2de5fd3192adef043a4ea5f7fe"
},
{
"path": "models/auth/source_operation_process_test.go",
"before_sha256": null,
"after_sha256": "40d33b11a01cb659f0bf6f8b545c4d79910e8c082a789060bcbc9cadeee965bd"
},
{
"path": "models/auth/source_operation_test.go",
"before_sha256": null,
"after_sha256": "77d311bca42f48faf3fbdc15c53582e3d8a6d9108a72ed7bb6172e5b88951428"
},
{
"path": "models/db/context.go",
"before_sha256": "10774e272206c7a8d6ebfb106b37d535de77f7e96ba57657b4dad960639f8519",
"after_sha256": "d4c4acfcb8987071aecf5cd957b3821c8d2619a2696398d37c2970f2527686f7"
},
{
"path": "models/db/engine.go",
"before_sha256": "774cedc74e1a8d9ae6f9e5f106c6cbb66f12c11b42e99ef07a7affd03269c3d2",
"after_sha256": "d21a5b0b9ca37ac48222b79007467a232abc38edda99b3c5f54f1f4c5ab795e8"
},
{
"path": "models/db/sensitive_sql.go",
"before_sha256": null,
"after_sha256": "06a298d0d6e628e6920384d4ddeef449e40c090841ebaa3f6d175725a45ae584"
},
{
"path": "models/db/sensitive_sql_logging_test.go",
"before_sha256": null,
"after_sha256": "d924b35d30686473caf29601cf51cc363ba68158cb4ef0981c9e2fc7b03c04b7"
},
{
"path": "models/db/sensitive_sql_test.go",
"before_sha256": null,
"after_sha256": "de6353c955047c3311747e4777b9f9b2195e9efb19160b971dd758dfc94cf31b"
},
{
"path": "models/db/tracing_context_test.go",
"before_sha256": null,
"after_sha256": "612b60c67a2be7e2da9173b95d5ef5abd7b9e1e377360828e39a622610bba070"
},
{
"path": "routers/web/admin/auths.go",
"before_sha256": "eeed6999e4655993b55873bb51efb4fcd946532255b9473d16e086e04a1ec911",
"after_sha256": "3498229e06fb9ff52396bcb5e68c0cc2d2ad24e6494533d8717d7c833f3e2923"
},
{
"path": "routers/web/auth/oauth.go",
"before_sha256": "6f454b3550b150178a8597a9437adb0c626556f34c15a13778c15d675b05659b",
"after_sha256": "58bff778e0dc17a521706289bf45c3e0d76a759a0874f76c379b3d1ddb419b17"
},
{
"path": "services/auth/source/oauth2/access_engine.go",
"before_sha256": null,
"after_sha256": "d5f07f9491ac2212410e1fa8c0248d68ba3a723e7ca99e363627c5292d187aa8"
},
{
"path": "services/auth/source/oauth2/access_engine_assurance.go",
"before_sha256": null,
"after_sha256": "42de751b1e9a243301d566260954813b770558ecb449639acaeab307fe788642"
},
{
"path": "services/auth/source/oauth2/access_engine_assurance_test.go",
"before_sha256": null,
"after_sha256": "44e7459f6c1106a264093c19d61d01a8365f6ad22682906552d832ba39d61dd3"
},
{
"path": "services/auth/source/oauth2/access_engine_azp_test.go",
"before_sha256": null,
"after_sha256": "5f94f43ade9a79b6b7ef529c80115a8c32acfece425dc8ed3f24e6ad839fc0ce"
},
{
"path": "services/auth/source/oauth2/access_engine_callback_test.go",
"before_sha256": null,
"after_sha256": "5cea36b630c895a9473dc876b7128526ddef65d9395b2fddc56343e162452472"
},
{
"path": "services/auth/source/oauth2/access_engine_test.go",
"before_sha256": null,
"after_sha256": "99edd6cfe3e834d73e0447a7915f52cc4ab7b82644669c5ae61963f850b447e8"
},
{
"path": "services/auth/source/oauth2/providers_openid.go",
"before_sha256": "6ddca7fb4ab8b16e6b096481cfb40ca5abdf3a327f38c895b95b3846cc7c2248",
"after_sha256": "5dd9b906cce434c774968d57fcc790cb678147345fea4d2e58477ec6eed70bcf"
},
{
"path": "services/auth/source/oauth2/required_claim_values.go",
"before_sha256": null,
"after_sha256": "29f16d07464bbe12e3f65616b6c1eb60561d04cd8ff89ecbfb56f93dbeaf1cda"
},
{
"path": "services/auth/source/oauth2/required_claim_values_test.go",
"before_sha256": null,
"after_sha256": "54a8bd97dc51c524a9adf0c6aefb9a19fa152d234b3bb929bf1a90932662d3d0"
},
{
"path": "services/auth/source/oauth2/source.go",
"before_sha256": "a6ee5146c07d8efb1837ef91f1ab5f3139f69a1ff66f814d5e9c6053bf9b0d8b",
"after_sha256": "44e99883c2ec479427b3f72c73353fe33936eed2e5c962b2fa40803576aa5642"
},
{
"path": "services/auth/source/oauth2/source_callout.go",
"before_sha256": "c30c418182d4cb98b1e448f621c93322accfbbf92d6a59e6df1ae45a7aa8fc7b",
"after_sha256": "6abba69df97afc62467f0328eaa5a6383cfb4900202a081dec4b84a21b37349c"
},
{
"path": "third_party/access-engine-pep/LICENSE",
"before_sha256": null,
"after_sha256": "ff413f361a3b3bf44cf50f110fbcc4837064d57eefbcef89df2b43997c6262b6"
},
{
"path": "third_party/access-engine-pep/go.mod",
"before_sha256": null,
"after_sha256": "fea700810e47c1ba5638b86a168f8531c083a6e1222ca80bd2a8947b2ea6f2c3"
},
{
"path": "third_party/access-engine-pep/internal/sign/sign.go",
"before_sha256": null,
"after_sha256": "0df9515922e90775ebbfac798361dcafb20da8a4213796b44e246b8a92046cde"
},
{
"path": "third_party/access-engine-pep/pkg/api/canonical.go",
"before_sha256": null,
"after_sha256": "a122a2e8cd524333b13c5939c7a3685e41efbe47497a64e0c7297c92b7f10d19"
},
{
"path": "third_party/access-engine-pep/pkg/api/caring.go",
"before_sha256": null,
"after_sha256": "1907156f0f889e7b9e9c14970cf7a86a20d00478a496efaf92c7231f27fec5e3"
},
{
"path": "third_party/access-engine-pep/pkg/api/resource_manifest.go",
"before_sha256": null,
"after_sha256": "f0fa4080287d389ed48c2b1d6af96cc62e57ef72c902333f677f964420be133f"
},
{
"path": "third_party/access-engine-pep/pkg/decisionpep/client.go",
"before_sha256": null,
"after_sha256": "0d57f6ddaca5c3f81ce426c0e8b14ba14ea5962096d3be5909aa456eef19eeba"
},
{
"path": "third_party/access-engine-pep/pkg/decisionpep/client_test.go",
"before_sha256": null,
"after_sha256": "1a6be3485f580f95a1f1406fb76e525f2c4bf02fe04a424cfe0095bb728e3f62"
},
{
"path": "third_party/access-engine-pep/producer-source.json",
"before_sha256": null,
"after_sha256": "c1d83e3d79f9860ffaa61ec19a6b3415e914d3058b11b07cdd05a7d1182cdceb"
},
{
"path": "third_party/access-engine-pep/testsupport/signfixture/sign.go",
"before_sha256": null,
"after_sha256": "fe4aa86f444dc20145aefbaca35b24f046264b2c5c8b4e3b057a4496b77a4d29"
}
],
"test_only_postgres_tag": "source_operation_postgres",
"remaining_native_work": [
"Independent owner/source/package/type admission",
"Current authenticated operation/inverse sessions and release-wide writer exclusion",
"Private evidence/retention/custody and actual deployed database acceptance",
"Ongoing HTTP/API/Git/SSH protected paths and native identity/factor journeys"
],
"native_gates_closed": 0
}

View file

@ -0,0 +1,391 @@
// Copyright 2014 The Gogs Authors. All rights reserved.
// Copyright 2018 The Gitea Authors. All rights reserved.
// SPDX-License-Identifier: MIT
package db
import (
"context"
"database/sql"
"errors"
"fmt"
"io"
"reflect"
"runtime/trace"
"strings"
"time"
"forgejo.org/modules/log"
"forgejo.org/modules/setting"
"xorm.io/xorm"
"xorm.io/xorm/contexts"
"xorm.io/xorm/names"
"xorm.io/xorm/schemas"
_ "github.com/go-sql-driver/mysql" // Needed for the MySQL driver
_ "github.com/lib/pq" // Needed for the Postgresql driver
)
var (
x *xorm.Engine
tables []any
initFuncs []func() error
)
// Engine represents a xorm engine or session.
type Engine interface {
Table(tableNameOrBean any) *xorm.Session
Count(...any) (int64, error)
Decr(column string, arg ...any) *xorm.Session
Delete(...any) (int64, error)
Truncate(...any) (int64, error)
Exec(...any) (sql.Result, error)
Find(any, ...any) error
Get(beans ...any) (bool, error)
ID(any) *xorm.Session
In(string, ...any) *xorm.Session
Incr(column string, arg ...any) *xorm.Session
Insert(...any) (int64, error)
Iterate(any, xorm.IterFunc) error
IsTableExist(any) (bool, error)
Join(joinOperator string, tablename, condition any, args ...any) *xorm.Session
SQL(any, ...any) *xorm.Session
Where(any, ...any) *xorm.Session
Asc(colNames ...string) *xorm.Session
Desc(colNames ...string) *xorm.Session
Limit(limit int, start ...int) *xorm.Session
NoAutoTime() *xorm.Session
SumInt(bean any, columnName string) (res int64, err error)
Sync(...any) error
Select(string) *xorm.Session
SetExpr(string, any) *xorm.Session
NotIn(string, ...any) *xorm.Session
OrderBy(any, ...any) *xorm.Session
Exist(...any) (bool, error)
Distinct(...string) *xorm.Session
Query(...any) ([]map[string][]byte, error)
Cols(...string) *xorm.Session
Context(ctx context.Context) *xorm.Session
Ping() error
}
// TableInfo returns table's information via an object
func TableInfo(v any) (*schemas.Table, error) {
return x.TableInfo(v)
}
// DumpTables dump tables information
func DumpTables(tables []*schemas.Table, w io.Writer, tp ...schemas.DBType) error {
return x.DumpTables(tables, w, tp...)
}
// RegisterModel registers model, if initfunc provided, it will be invoked after data model sync
func RegisterModel(bean any, initFunc ...func() error) {
tables = append(tables, bean)
if len(initFuncs) > 0 && initFunc[0] != nil {
initFuncs = append(initFuncs, initFunc[0])
}
}
func init() {
gonicNames := []string{"SSL", "UID"}
for _, name := range gonicNames {
names.LintGonicMapper[name] = true
}
}
// newXORMEngine returns a new XORM engine from the configuration
func newXORMEngine() (*xorm.Engine, error) {
connStr, err := setting.DBConnStr()
if err != nil {
return nil, err
}
var engine *xorm.Engine
if setting.Database.Type.IsPostgreSQL() && len(setting.Database.Schema) > 0 {
// OK whilst we sort out our schema issues - create a schema aware postgres
registerPostgresSchemaDriver()
engine, err = xorm.NewEngine("postgresschema", connStr)
} else {
engine, err = xorm.NewEngine(setting.Database.Type.String(), connStr)
}
if err != nil {
return nil, err
}
if setting.Database.Type.IsMySQL() {
engine.Dialect().SetParams(map[string]string{"rowFormat": "DYNAMIC"})
}
engine.SetSchema(setting.Database.Schema)
return engine, nil
}
// SyncAllTables sync the schemas of all tables, is required by unit test code
func SyncAllTables() error {
_, err := x.StoreEngine("InnoDB").SyncWithOptions(xorm.SyncOptions{
WarnIfDatabaseColumnMissed: true,
}, tables...)
return err
}
// InitEngine initializes the xorm.Engine and sets it as db.DefaultContext
func InitEngine(ctx context.Context) error {
xormEngine, err := newXORMEngine()
if err != nil {
return fmt.Errorf("failed to connect to database: %w", err)
}
xormEngine.SetMapper(names.GonicMapper{})
// WARNING: for serv command, MUST remove the output to os.stdout,
// so use log file to instead print to stdout.
xormEngine.SetLogger(NewXORMLogger(setting.Database.LogSQL))
xormEngine.ShowSQL(setting.Database.LogSQL)
xormEngine.SetMaxOpenConns(setting.Database.MaxOpenConns)
xormEngine.SetMaxIdleConns(setting.Database.MaxIdleConns)
xormEngine.SetConnMaxLifetime(setting.Database.ConnMaxLifetime)
xormEngine.SetConnMaxIdleTime(setting.Database.ConnMaxIdleTime)
xormEngine.SetDefaultContext(ctx)
if setting.Database.SlowQueryThreshold > 0 {
xormEngine.AddHook(&SlowQueryHook{
Treshold: setting.Database.SlowQueryThreshold,
Logger: log.GetLogger("xorm"),
})
}
errorLogger := log.GetLogger("xorm")
if setting.IsInTesting {
errorLogger = log.GetLogger(log.DEFAULT)
}
xormEngine.AddHook(&ErrorQueryHook{
Logger: errorLogger,
})
xormEngine.AddHook(&TracingHook{})
SetDefaultEngine(ctx, xormEngine)
return nil
}
// SetDefaultEngine sets the default engine for db
func SetDefaultEngine(ctx context.Context, eng *xorm.Engine) {
x = eng
DefaultContext = &Context{
Context: ctx,
e: x,
}
}
// UnsetDefaultEngine closes and unsets the default engine
// We hope the SetDefaultEngine and UnsetDefaultEngine can be paired, but it's impossible now,
// there are many calls to InitEngine -> SetDefaultEngine directly to overwrite the `x` and DefaultContext without close
// Global database engine related functions are all racy and there is no graceful close right now.
func UnsetDefaultEngine() {
if x != nil {
_ = x.Close()
x = nil
}
DefaultContext = nil
}
// InitEngineWithMigration initializes a new xorm.Engine and sets it as the db.DefaultContext
// This function must never call .Sync() if the provided migration function fails.
// When called from the "doctor" command, the migration function is a version check
// that prevents the doctor from fixing anything in the database if the migration level
// is different from the expected value.
func InitEngineWithMigration(ctx context.Context, migrateFunc func(*xorm.Engine) error) (err error) {
if err = InitEngine(ctx); err != nil {
return err
}
if err = x.Ping(); err != nil {
return err
}
preprocessDatabaseCollation(x)
// We have to run migrateFunc here in case the user is re-running installation on a previously created DB.
// If we do not then table schemas will be changed and there will be conflicts when the migrations run properly.
//
// Installation should only be being re-run if users want to recover an old database.
// However, we should think carefully about should we support re-install on an installed instance,
// as there may be other problems due to secret reinitialization.
if err = migrateFunc(x); err != nil {
return fmt.Errorf("migrate: %w", err)
}
if err = SyncAllTables(); err != nil {
return fmt.Errorf("sync database struct error: %w", err)
}
for _, initFunc := range initFuncs {
if err := initFunc(); err != nil {
return fmt.Errorf("initFunc failed: %w", err)
}
}
return nil
}
// NamesToBean return a list of beans or an error
func NamesToBean(names ...string) ([]any, error) {
beans := []any{}
if len(names) == 0 {
beans = append(beans, tables...)
return beans, nil
}
// Need to map provided names to beans...
beanMap := make(map[string]any)
for _, bean := range tables {
beanMap[strings.ToLower(reflect.Indirect(reflect.ValueOf(bean)).Type().Name())] = bean
beanMap[strings.ToLower(x.TableName(bean))] = bean
beanMap[strings.ToLower(x.TableName(bean, true))] = bean
}
gotBean := make(map[any]bool)
for _, name := range names {
bean, ok := beanMap[strings.ToLower(strings.TrimSpace(name))]
if !ok {
return nil, fmt.Errorf("no table found that matches: %s", name)
}
if !gotBean[bean] {
beans = append(beans, bean)
gotBean[bean] = true
}
}
return beans, nil
}
// DumpDatabase dumps all data from database according the special database SQL syntax to file system.
func DumpDatabase(filePath, dbType string) error {
var tbs []*schemas.Table
for _, t := range tables {
t, err := x.TableInfo(t)
if err != nil {
return err
}
tbs = append(tbs, t)
}
type Version struct {
ID int64 `xorm:"pk autoincr"`
Version int64
}
t, err := x.TableInfo(&Version{})
if err != nil {
return err
}
tbs = append(tbs, t)
if len(dbType) > 0 {
return x.DumpTablesToFile(tbs, filePath, schemas.DBType(dbType))
}
return x.DumpTablesToFile(tbs, filePath)
}
// MaxBatchInsertSize returns the table's max batch insert size
func MaxBatchInsertSize(bean any) int {
t, err := x.TableInfo(bean)
if err != nil {
return 50
}
return 999 / len(t.ColumnsSeq())
}
// IsTableNotEmpty returns true if table has at least one record
func IsTableNotEmpty(beanOrTableName any) (bool, error) {
return x.Table(beanOrTableName).Exist()
}
// DeleteAllRecords will delete all the records of this table
func DeleteAllRecords(tableName string) error {
_, err := x.Exec(fmt.Sprintf("DELETE FROM %s", tableName))
return err
}
// GetMaxID will return max id of the table
func GetMaxID(beanOrTableName any) (maxID int64, err error) {
_, err = x.Select("MAX(id)").Table(beanOrTableName).Get(&maxID)
return maxID, err
}
func SetLogSQL(ctx context.Context, on bool) {
e := GetEngine(ctx)
if x, ok := e.(*xorm.Engine); ok {
x.ShowSQL(on)
} else if sess, ok := e.(*xorm.Session); ok {
sess.Engine().ShowSQL(on)
}
}
type TracingHook struct{}
var _ contexts.Hook = &TracingHook{}
type sqlTask struct{}
func (TracingHook) BeforeProcess(c *contexts.ContextHook) (context.Context, error) {
ctx, task := trace.NewTask(c.Ctx, "sql")
ctx = context.WithValue(ctx, sqlTask{}, task)
// XORM passes the same ContextHook to every BeforeProcess hook. Publish
// the task there too, so a later hook returning c.Ctx retains it.
c.Ctx = ctx
if isSensitiveSQL(c.Ctx) {
trace.Log(ctx, "query", "[owner-confined query]")
} else {
trace.Log(ctx, "query", c.SQL)
trace.Logf(ctx, "args", "%v", c.Args)
}
return ctx, nil
}
func (TracingHook) AfterProcess(c *contexts.ContextHook) error {
c.Ctx.Value(sqlTask{}).(*trace.Task).End()
return nil
}
type SlowQueryHook struct {
Treshold time.Duration
Logger log.Logger
}
var _ contexts.Hook = &SlowQueryHook{}
func (SlowQueryHook) BeforeProcess(c *contexts.ContextHook) (context.Context, error) {
return c.Ctx, nil
}
func (h *SlowQueryHook) AfterProcess(c *contexts.ContextHook) error {
if c.ExecuteTime >= h.Treshold {
if isSensitiveSQL(c.Ctx) {
h.Logger.Log(8, log.WARN, "[Slow SQL Query] [owner-confined query] - %v", c.ExecuteTime)
} else {
h.Logger.Log(8, log.WARN, "[Slow SQL Query] %s %v - %v", c.SQL, c.Args, c.ExecuteTime)
}
}
return nil
}
type ErrorQueryHook struct {
Logger log.Logger
}
var _ contexts.Hook = &ErrorQueryHook{}
func (ErrorQueryHook) BeforeProcess(c *contexts.ContextHook) (context.Context, error) {
return c.Ctx, nil
}
func (h *ErrorQueryHook) AfterProcess(c *contexts.ContextHook) error {
if c.Err != nil && !errors.Is(c.Err, context.Canceled) {
if isSensitiveSQL(c.Ctx) {
h.Logger.Log(8, log.ERROR, "[Error SQL Query] [owner-confined query]")
} else {
h.Logger.Log(8, log.ERROR, "[Error SQL Query] %s %v - %v", c.SQL, c.Args, c.Err)
}
}
return nil
}

View file

@ -0,0 +1,54 @@
package db
import (
"bytes"
"context"
"runtime/trace"
"testing"
"xorm.io/xorm"
"xorm.io/xorm/contexts"
)
type followingQueryHook struct{}
func (followingQueryHook) BeforeProcess(c *contexts.ContextHook) (context.Context, error) {
return c.Ctx, nil
}
func (followingQueryHook) AfterProcess(*contexts.ContextHook) error { return nil }
func TestTracingContextSurvivesFollowingHooks(t *testing.T) {
for _, sensitive := range []bool{false, true} {
for _, fail := range []bool{false, true} {
engine, err := xorm.NewEngine("sqlite3", ":memory:")
if err != nil {
t.Fatal(err)
}
engine.AddHook(TracingHook{})
engine.AddHook(followingQueryHook{})
ctx := context.Background()
if sensitive {
ctx = WithSensitiveSQL(ctx)
}
var output bytes.Buffer
if err := trace.Start(&output); err != nil {
t.Fatal(err)
}
func() {
defer trace.Stop()
query := "SELECT ?"
if fail {
query = "SELECT missing_synthetic_function(?)"
}
_, err = engine.Context(ctx).Exec(query, "synthetic-following-hook-sentinel")
}()
_ = engine.Close()
if (err != nil) != fail {
t.Fatal("unexpected real SQLite query outcome")
}
if bytes.Contains(output.Bytes(), []byte("synthetic-following-hook-sentinel")) == sensitive {
t.Fatal("following hook changed private or ordinary trace disclosure")
}
}
}
}

View file

@ -0,0 +1,45 @@
{
"controls": [
{
"receipt": "postgres-suite-attempt5.json",
"mutation": {
"mutation": "omit-postgres-lock",
"original_source_sha256": "sha256:ef1b07ef6cf454015d00cde8588835f5118d829da91eb0303d37184859345a31",
"controlled_source_sha256": "sha256:137bcc05baf724abfcb9c48a2ef45d5064a6a163c4ba98269364eafb9a1096cd",
"production_source_changed": false
},
"failed_tests": [
"TestSourceOperationPostgres/default/uncooperative-writers-excluded",
"TestSourceOperationPostgres/default/concurrent-preparation-has-one-owner",
"TestSourceOperationPostgres/default",
"TestSourceOperationPostgres/public/uncooperative-writers-excluded",
"TestSourceOperationPostgres/public",
"TestSourceOperationPostgres/named/uncooperative-writers-excluded",
"TestSourceOperationPostgres/named",
"TestSourceOperationPostgres"
],
"all_three_database_profiles_detect_the_removed_control": true
},
{
"receipt": "postgres-suite-attempt6.json",
"mutation": {
"mutation": "omit-private-context",
"original_source_sha256": "sha256:ef1b07ef6cf454015d00cde8588835f5118d829da91eb0303d37184859345a31",
"controlled_source_sha256": "sha256:0b9e248b685a950cfbf31f76aafd54e1b99272402a2f05bc6d8b742bc2657d82",
"production_source_changed": false
},
"failed_tests": [
"TestSourceOperationPostgres/default/driver-error-rollback-and-private-diagnostics",
"TestSourceOperationPostgres/default",
"TestSourceOperationPostgres/public/driver-error-rollback-and-private-diagnostics",
"TestSourceOperationPostgres/public",
"TestSourceOperationPostgres/named/driver-error-rollback-and-private-diagnostics",
"TestSourceOperationPostgres/named",
"TestSourceOperationPostgres"
],
"all_three_database_profiles_detect_the_removed_control": true
}
],
"production_source_changed": false,
"counterexamples_are_not_successful_normal_runs": true
}

View file

@ -0,0 +1,17 @@
{
"container_state": {
"Status": "exited",
"Running": false,
"Paused": false,
"Restarting": false,
"OOMKilled": false,
"Dead": false,
"Pid": 0,
"ExitCode": 2,
"Error": "",
"StartedAt": "2026-10-18T00:52:30.648750486Z",
"FinishedAt": "2026-10-18T00:52:33.100722803Z"
},
"test_packages_executed": false,
"real_credentials": false
}

View file

@ -0,0 +1,45 @@
The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.
The database cluster will be initialized with locale "en_US.utf8".
The default database encoding has accordingly been set to "UTF8".
The default text search configuration will be set to "english".
Data page checksums are disabled.
fixing permissions on existing directory /var/lib/postgresql/data ... ok
creating subdirectories ... ok
selecting dynamic shared memory implementation ... posix
selecting default max_connections ... 100
selecting default shared_buffers ... 128MB
selecting default time zone ... UTC
creating configuration files ... ok
running bootstrap script ... ok
performing post-bootstrap initialization ... ok
syncing data to disk ... ok
Success. You can now start the database server using:
pg_ctl -D /var/lib/postgresql/data -l logfile start
waiting for server to start....2026-10-18 00:52:33.016 UTC [66] LOG: starting PostgreSQL 16.14 on x86_64-pc-linux-musl, compiled by gcc (Alpine 15.2.0) 15.2.0, 64-bit
2026-10-18 00:52:33.019 UTC [66] LOG: listening on Unix socket "/socket/.s.PGSQL.5432"
2026-10-18 00:52:33.030 UTC [69] LOG: database system was shut down at 2026-10-18 00:52:32 UTC
2026-10-18 00:52:33.039 UTC [66] LOG: database system is ready to accept connections
done
server started
https://www.postgresql.org/docs/current/auth-trust.html
In Docker's default configuration, this is effectively any other
container on the same system.
It is not recommended to use POSTGRES_HOST_AUTH_METHOD=trust. Replace
it with "-e POSTGRES_PASSWORD=password" instead to set a password in
"docker run".
********************************************************************************
sh: locale: not found
2026-10-18 00:52:31.773 UTC [48] WARNING: no usable system locales were found
initdb: warning: enabling "trust" authentication for local connections
initdb: hint: You can change this by editing pg_hba.conf or using the option -A, or --auth-local and --auth-host, the next time you run initdb.
psql: error: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: No such file or directory
Is the server running locally and accepting connections on that socket?

View file

@ -0,0 +1,7 @@
{
"exact_owned_container_removed": true,
"exact_owned_volume_removed": true,
"container_id": "cb87f8327d5572b8a2ebe875db17fbc1b1ecfefa27b63f6282531e152f583005",
"volume": "custodian-forgejo-pg-b8712ab62110-data",
"real_credentials": false
}

View file

@ -0,0 +1,7 @@
{
"exact_owned_container_removed": true,
"exact_owned_volume_removed": true,
"container_id": "60dd3cdc9ee384ace5f008fc7d58c1e19eb120cd8585527e7a4752f79d05a659",
"volume": "custodian-forgejo-pg-96ce905f445a-data",
"real_credentials": false
}

View file

@ -0,0 +1,7 @@
{
"exact_owned_container_removed": true,
"exact_owned_volume_removed": true,
"container_id": "282c533dff17e9d0cbaf5f3ecfdbad4ecbd9b6dc6038c75746a3fcd5880100d9",
"volume": "custodian-forgejo-pg-f1a9a061ff4e-data",
"real_credentials": false
}

View file

@ -0,0 +1,18 @@
{
"container_state": {
"Status": "exited",
"Running": false,
"Paused": false,
"Restarting": false,
"OOMKilled": false,
"Dead": false,
"Pid": 0,
"ExitCode": 2,
"Error": "",
"StartedAt": "2026-10-18T00:50:01.120178159Z",
"FinishedAt": "2026-10-18T00:50:07.2845179Z"
},
"runtime_setup_failed": true,
"test_packages_executed": false,
"real_credentials": false
}

View file

@ -0,0 +1,35 @@
The database cluster will be initialized with locale "en_US.utf8".
The default database encoding has accordingly been set to "UTF8".
The default text search configuration will be set to "english".
Data page checksums are disabled.
fixing permissions on existing directory /var/lib/postgresql/data ... ok
creating subdirectories ... ok
selecting dynamic shared memory implementation ... posix
selecting default max_connections ... 100
selecting default shared_buffers ... 128MB
selecting default time zone ... UTC
creating configuration files ... ok
running bootstrap script ... ok
performing post-bootstrap initialization ... ok
syncing data to disk ... ok
Success. You can now start the database server using:
pg_ctl -D /var/lib/postgresql/data -l logfile start
waiting for server to start....2026-10-18 00:50:07.195 UTC [55] LOG: starting PostgreSQL 16.14 on x86_64-pc-linux-musl, compiled by gcc (Alpine 15.2.0) 15.2.0, 64-bit
2026-10-18 00:50:07.198 UTC [55] LOG: listening on Unix socket "/socket/.s.PGSQL.5432"
2026-10-18 00:50:07.209 UTC [64] LOG: database system was shut down at 2026-10-18 00:50:06 UTC
2026-10-18 00:50:07.218 UTC [55] LOG: database system is ready to accept connections
2026-10-18 00:50:07.253 UTC [68] FATAL: database "custodian_source" does not exist
done
server started
sh: locale: not found
2026-10-18 00:50:05.943 UTC [42] WARNING: no usable system locales were found
initdb: warning: enabling "trust" authentication for local connections
initdb: hint: You can change this by editing pg_hba.conf or using the option -A, or --auth-local and --auth-host, the next time you run initdb.
psql: error: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: No such file or directory
Is the server running locally and accepting connections on that socket?

View file

@ -0,0 +1,7 @@
{
"status": "ready_after_actual_server_restart",
"container_id": "60dd3cdc9ee384ace5f008fc7d58c1e19eb120cd8585527e7a4752f79d05a659",
"retained_volume": "custodian-forgejo-pg-96ce905f445a-data",
"server_version_num": 160014,
"synthetic_data_only": true
}

View file

@ -0,0 +1,53 @@
{
"trial": "custodian-forgejo-pg-b8712ab62110",
"container_id": "cb87f8327d5572b8a2ebe875db17fbc1b1ecfefa27b63f6282531e152f583005",
"volume": "custodian-forgejo-pg-b8712ab62110-data",
"image_id": "sha256:57c72fd2a128e416c7fcc499958864df5301e940bca0a56f58fddf30ffc07777",
"creation_argv": [
"docker",
"create",
"--name",
"custodian-forgejo-pg-b8712ab62110",
"--label",
"custodian.source-test=custodian-forgejo-pg-b8712ab62110",
"--network",
"none",
"--memory",
"512m",
"--cpus",
"1",
"--pids-limit",
"128",
"--shm-size",
"64m",
"--mount",
"type=volume,source=custodian-forgejo-pg-b8712ab62110-data,target=/var/lib/postgresql/data",
"--mount",
"type=bind,source=/tmp/custodian-forgejo-postgres-r1-attempt2/socket,target=/socket",
"--env",
"POSTGRES_USER=custodian_test",
"--env",
"POSTGRES_DB=custodian_source",
"--env",
"PGHOST=/socket",
"--env",
"POSTGRES_HOST_AUTH_METHOD=trust",
"sha256:57c72fd2a128e416c7fcc499958864df5301e940bca0a56f58fddf30ffc07777",
"postgres",
"-c",
"listen_addresses=",
"-c",
"unix_socket_directories=/socket",
"-c",
"unix_socket_permissions=0777",
"-c",
"log_statement=none",
"-c",
"log_min_error_statement=panic"
],
"synthetic_data_only": true,
"real_credentials": false,
"network": "none",
"ports_published": false,
"authentication": "trust on private synthetic Unix-socket fixture; not a custody/authentication proof"
}

View file

@ -0,0 +1,55 @@
{
"trial": "custodian-forgejo-pg-96ce905f445a",
"container_id": "60dd3cdc9ee384ace5f008fc7d58c1e19eb120cd8585527e7a4752f79d05a659",
"volume": "custodian-forgejo-pg-96ce905f445a-data",
"image_id": "sha256:57c72fd2a128e416c7fcc499958864df5301e940bca0a56f58fddf30ffc07777",
"creation_argv": [
"docker",
"create",
"--name",
"custodian-forgejo-pg-96ce905f445a",
"--label",
"custodian.source-test=custodian-forgejo-pg-96ce905f445a",
"--network",
"none",
"--memory",
"512m",
"--cpus",
"1",
"--pids-limit",
"128",
"--shm-size",
"64m",
"--mount",
"type=volume,source=custodian-forgejo-pg-96ce905f445a-data,target=/var/lib/postgresql/data",
"--mount",
"type=bind,source=/tmp/custodian-forgejo-postgres-r1-attempt3/socket,target=/socket",
"--env",
"POSTGRES_USER=custodian_test",
"--env",
"POSTGRES_DB=custodian_source",
"--env",
"PGHOST=/socket",
"--env",
"POSTGRES_HOST_AUTH_METHOD=trust",
"sha256:57c72fd2a128e416c7fcc499958864df5301e940bca0a56f58fddf30ffc07777",
"postgres",
"-c",
"listen_addresses=",
"-c",
"unix_socket_directories=/var/run/postgresql,/socket",
"-c",
"unix_socket_permissions=0777",
"-c",
"log_statement=none",
"-c",
"log_min_error_statement=panic"
],
"synthetic_data_only": true,
"real_credentials": false,
"network": "none",
"ports_published": false,
"authentication": "trust on private synthetic Unix-socket fixture; not a custody/authentication proof",
"server_version_num": 160014,
"status": "ready"
}

View file

@ -0,0 +1,51 @@
{
"trial": "custodian-forgejo-pg-f1a9a061ff4e",
"container_id": "282c533dff17e9d0cbaf5f3ecfdbad4ecbd9b6dc6038c75746a3fcd5880100d9",
"volume": "custodian-forgejo-pg-f1a9a061ff4e-data",
"image_id": "sha256:57c72fd2a128e416c7fcc499958864df5301e940bca0a56f58fddf30ffc07777",
"creation_argv": [
"docker",
"create",
"--name",
"custodian-forgejo-pg-f1a9a061ff4e",
"--label",
"custodian.source-test=custodian-forgejo-pg-f1a9a061ff4e",
"--network",
"none",
"--memory",
"512m",
"--cpus",
"1",
"--pids-limit",
"128",
"--shm-size",
"64m",
"--mount",
"type=volume,source=custodian-forgejo-pg-f1a9a061ff4e-data,target=/var/lib/postgresql/data",
"--mount",
"type=bind,source=/tmp/custodian-forgejo-postgres-r1/socket,target=/socket",
"--env",
"POSTGRES_USER=custodian_test",
"--env",
"POSTGRES_DB=custodian_source",
"--env",
"POSTGRES_HOST_AUTH_METHOD=trust",
"sha256:57c72fd2a128e416c7fcc499958864df5301e940bca0a56f58fddf30ffc07777",
"postgres",
"-c",
"listen_addresses=",
"-c",
"unix_socket_directories=/socket",
"-c",
"unix_socket_permissions=0777",
"-c",
"log_statement=none",
"-c",
"log_min_error_statement=panic"
],
"synthetic_data_only": true,
"real_credentials": false,
"network": "none",
"ports_published": false,
"authentication": "trust on private synthetic Unix-socket fixture; not a custody/authentication proof"
}

View file

@ -0,0 +1,121 @@
"""Own one disposable local PostgreSQL container and its synthetic volume."""
from pathlib import Path
import argparse
import json
import subprocess
import time
import uuid
HERE = Path(__file__).resolve().parent
parser = argparse.ArgumentParser()
parser.add_argument('action', choices=['start', 'ready', 'restart', 'cleanup'])
parser.add_argument('--attempt', type=int, default=1)
args = parser.parse_args()
suffix = '' if args.attempt == 1 else '-attempt' + str(args.attempt)
WORK = Path('/tmp/custodian-forgejo-postgres-r1' + suffix)
if args.action == 'start':
WORK.mkdir(exist_ok=True)
(WORK / 'home').mkdir(exist_ok=True)
(WORK / 'docker-config').mkdir(exist_ok=True)
ENV = {'PATH': '/usr/bin:/bin', 'HOME': str(WORK / 'home'),
'DOCKER_CONFIG': str(WORK / 'docker-config'), 'DOCKER_HOST': 'unix:///var/run/docker.sock'}
def docker(*arguments):
result = subprocess.run(['docker', *arguments], env=ENV, capture_output=True,
text=True, timeout=90)
assert result.returncode == 0, 'local synthetic database command refused'
return result.stdout.strip()
def inspect(cid):
return json.loads(docker('inspect', '--format', '{{json .}}', cid))
def owned(state):
item = inspect(state['container_id'])
assert item['Config']['Labels']['custodian.source-test'] == state['trial']
assert item['HostConfig']['NetworkMode'] == 'none'
assert not item['HostConfig']['Privileged'] and not item['HostConfig']['PortBindings']
assert item['Image'] == state['image_id']
mounts = item['Mounts']
assert len(mounts) == 2
assert any(m['Type'] == 'volume' and m['Name'] == state['volume'] and m['Destination'] == '/var/lib/postgresql/data' for m in mounts)
assert any(m['Type'] == 'bind' and m['Source'] == str(WORK / 'socket') and m['Destination'] == '/socket' for m in mounts)
return item
def ready(state):
for _ in range(30):
# pg_isready can succeed against the entrypoint's temporary init server,
# before the requested database exists. Require final PID 1 plus a real
# query in that exact synthetic database instead.
process = subprocess.run(['docker', 'exec', state['container_id'], 'cat', '/proc/1/comm'],
env=ENV, capture_output=True, text=True, timeout=5)
result = subprocess.run(['docker', 'exec', state['container_id'], 'psql',
'-h', '/socket', '-U', 'custodian_test', '-d', 'custodian_source',
'-At', '-c', 'SHOW server_version_num'],
env=ENV, capture_output=True, text=True, timeout=5)
if process.returncode == result.returncode == 0 and process.stdout.strip() == 'postgres' and result.stdout.strip().isdecimal():
break
time.sleep(1)
else:
raise AssertionError('synthetic PostgreSQL did not become ready; retained')
version = result.stdout.strip()
assert version.isdecimal() and int(version) // 10000 == 16
state['server_version_num'] = int(version)
state_path = HERE / ('database-runtime' + suffix + '.json')
if args.action == 'start':
assert not state_path.exists()
trial = 'custodian-forgejo-pg-' + uuid.uuid4().hex[:12]
image = json.loads((HERE / 'public-database-image.json').read_text())['image_id']
volume = trial + '-data'
socket = WORK / 'socket'
socket.mkdir(mode=0o777)
socket.chmod(0o777) # Synthetic Unix socket only, in this new /tmp trial.
docker('volume', 'create', '--label', 'custodian.source-test=' + trial, volume)
argv = ['create', '--name', trial, '--label', 'custodian.source-test=' + trial,
'--network', 'none', '--memory', '512m', '--cpus', '1', '--pids-limit', '128',
'--shm-size', '64m', '--mount', 'type=volume,source=' + volume + ',target=/var/lib/postgresql/data',
'--mount', 'type=bind,source=' + str(socket) + ',target=/socket',
'--env', 'POSTGRES_USER=custodian_test', '--env', 'POSTGRES_DB=custodian_source',
'--env', 'PGHOST=/socket',
'--env', 'POSTGRES_HOST_AUTH_METHOD=trust', image, 'postgres',
'-c', 'listen_addresses=', '-c', 'unix_socket_directories=/var/run/postgresql,/socket',
'-c', 'unix_socket_permissions=0777', '-c', 'log_statement=none',
'-c', 'log_min_error_statement=panic']
cid = docker(*argv)
state = dict(trial=trial, container_id=cid, volume=volume, image_id=image,
creation_argv=['docker', *argv], synthetic_data_only=True,
real_credentials=False, network='none', ports_published=False,
authentication='trust on private synthetic Unix-socket fixture; not a custody/authentication proof')
state_path.write_text(json.dumps(state, indent=2) + '\n')
owned(state)
docker('start', cid)
ready(state)
state['status'] = 'ready'
state_path.write_text(json.dumps(state, indent=2) + '\n')
else:
state = json.loads(state_path.read_text())
owned(state)
if args.action == 'ready':
assert inspect(state['container_id'])['State']['Running']
ready(state)
state['status'] = 'ready'
state_path.write_text(json.dumps(state, indent=2) + '\n')
elif args.action == 'restart':
docker('restart', '--time', '10', state['container_id'])
ready(state)
(HERE / ('database-restart' + suffix + '.json')).write_text(json.dumps(dict(
status='ready_after_actual_server_restart', container_id=state['container_id'],
retained_volume=state['volume'], server_version_num=state['server_version_num'],
synthetic_data_only=True), indent=2) + '\n')
else:
docker('stop', '--time', '10', state['container_id'])
owned(state)
docker('rm', state['container_id'])
volume = json.loads(docker('volume', 'inspect', '--format', '{{json .}}', state['volume']))
assert volume['Labels']['custodian.source-test'] == state['trial']
docker('volume', 'rm', state['volume'])
(HERE / ('database-cleanup' + suffix + '.json')).write_text(json.dumps(dict(
exact_owned_container_removed=True, exact_owned_volume_removed=True,
container_id=state['container_id'], volume=state['volume'],
real_credentials=False), indent=2) + '\n')
print(json.dumps({'action': args.action, 'trial': state['trial'], 'synthetic_data_only': True}))

View file

@ -0,0 +1,48 @@
"""Apply the tested build candidate, preserving every unrelated owner file."""
from pathlib import Path
import hashlib
import json
import re
import subprocess
HERE = Path(__file__).resolve().parent
ROOT = Path('/home/worsch/railiance-apps')
cfg = json.loads((HERE / 'source-manifest.json').read_text())
sha = lambda data: hashlib.sha256(data).hexdigest()
def git(*args):
return subprocess.check_output(['git', '-C', str(ROOT), *args], text=True).strip()
assert git('rev-parse', 'HEAD') == cfg['base_revision']
assert git('ls-remote', 'origin', 'refs/heads/main').split()[0] == cfg['base_revision']
assert set(git('diff', '--name-only', 'HEAD').splitlines()) <= {'.custodian-brief.md', 'WORK-RECORDS.md'}
tracked = git('ls-files').splitlines()
protected = {name: sha((ROOT / name).read_bytes()) for name in tracked
if (ROOT / name).is_file() and name not in {row['path'] for row in cfg['files']}}
index = git('ls-files', '--stage', '--', '.custodian-brief.md', 'WORK-RECORDS.md')
plan = 'workplans/RAPPS-WP-0016-forgejo-netkingdom-login.md'
before = re.findall(r'```task\n.*?```', (ROOT / plan).read_text(), re.S)
assert len(before) == 9
for row in cfg['files']:
current = ROOT / row['path']
if row['before_sha256'] is None:
assert not current.exists(), row['path']
else:
assert sha(current.read_bytes()) == row['before_sha256'], row['path']
assert sha(Path(row['source']).read_bytes()) == row['sha256'], row['path']
for row in cfg['files']:
target = ROOT / row['path']
target.parent.mkdir(parents=True, exist_ok=True)
target.write_bytes(Path(row['source']).read_bytes())
after = re.findall(r'```task\n.*?```', (ROOT / plan).read_text(), re.S)
assert before == after
assert all(sha((ROOT / name).read_bytes()) == value for name, value in protected.items())
assert git('ls-files', '--stage', '--', '.custodian-brief.md', 'WORK-RECORDS.md') == index
receipt = dict(owner=cfg['owner'], base_revision='git:' + cfg['base_revision'],
files=cfg['files'], preserved_other_tracked_files=len(protected),
original_task_uuids_preserved=9, status_change=None,
native_actions=False, independent_owner_review=False, operational_admission=False)
(HERE / 'source-application.json').write_text(json.dumps(receipt, indent=2) + '\n')
publication = dict(owner=cfg['owner'], base_revision=cfg['base_revision'],
message='Verify Forgejo PostgreSQL operations and preserve tracing hook context',
files=[dict(path=row['path'], sha256=row['sha256']) for row in cfg['files']])
(HERE / 'publication-inputs.json').write_text(json.dumps(publication, indent=2) + '\n')
print(json.dumps(dict(status='source_applied', files=len(cfg['files']), native_actions=False)))

View file

@ -0,0 +1,393 @@
{
"repo_slug": "railiance-apps",
"repo_path": "/home/worsch/railiance-apps",
"source_revision": "308e83fcfbf9ec98dbe6b0286cbe8ec7be8899b3",
"source_revision_reason": null,
"issues": [
{
"severity": "WARN",
"check_id": "C-35",
"message": "Repo Manager warning: .repo-classification.yaml: category is project but slug is not prj-*; not every category:project is a prj- repo",
"file_path": ".repo-classification.yaml",
"db_id": "",
"file_value": "",
"db_value": "",
"fixable": false
},
{
"severity": "WARN",
"check_id": "C-35",
"message": "Repo Manager missing: README.md: README.md is required for flavor project",
"file_path": "README.md",
"db_id": "",
"file_value": "",
"db_value": "",
"fixable": false
},
{
"severity": "WARN",
"check_id": "C-35",
"message": "Repo Manager warning: workplans/: repository uses more than one workplan prefix: ['RAILIANCE-WP', 'RAPPS-WP']",
"file_path": "workplans/",
"db_id": "",
"file_value": "",
"db_value": "",
"fixable": false
},
{
"severity": "WARN",
"check_id": "C-35",
"message": "Repo Manager contradictory: workplans/archived/260702-railiance-apps-WP-0004-app-deployment-improvements.md#task-block-1: task id 'RAILIANCE-WP-0004-I01' is not accepted by the canon kind registry",
"file_path": "workplans/archived/260702-railiance-apps-WP-0004-app-deployment-improvements.md#task-block-1",
"db_id": "",
"file_value": "",
"db_value": "",
"fixable": false
},
{
"severity": "WARN",
"check_id": "C-35",
"message": "Repo Manager contradictory: workplans/archived/260702-railiance-apps-WP-0004-app-deployment-improvements.md#task-block-2: task id 'RAILIANCE-WP-0004-I02' is not accepted by the canon kind registry",
"file_path": "workplans/archived/260702-railiance-apps-WP-0004-app-deployment-improvements.md#task-block-2",
"db_id": "",
"file_value": "",
"db_value": "",
"fixable": false
},
{
"severity": "WARN",
"check_id": "C-35",
"message": "Repo Manager contradictory: workplans/archived/260702-railiance-apps-WP-0004-app-deployment-improvements.md#task-block-3: task id 'RAILIANCE-WP-0004-I03' is not accepted by the canon kind registry",
"file_path": "workplans/archived/260702-railiance-apps-WP-0004-app-deployment-improvements.md#task-block-3",
"db_id": "",
"file_value": "",
"db_value": "",
"fixable": false
},
{
"severity": "WARN",
"check_id": "C-35",
"message": "Repo Manager contradictory: workplans/archived/260702-railiance-apps-WP-0004-app-deployment-improvements.md#task-block-4: task id 'RAILIANCE-WP-0004-I04' is not accepted by the canon kind registry",
"file_path": "workplans/archived/260702-railiance-apps-WP-0004-app-deployment-improvements.md#task-block-4",
"db_id": "",
"file_value": "",
"db_value": "",
"fixable": false
},
{
"severity": "WARN",
"check_id": "C-35",
"message": "Repo Manager contradictory: workplans/archived/260702-railiance-apps-WP-0004-app-deployment-improvements.md#task-block-5: task id 'RAILIANCE-WP-0004-I05' is not accepted by the canon kind registry",
"file_path": "workplans/archived/260702-railiance-apps-WP-0004-app-deployment-improvements.md#task-block-5",
"db_id": "",
"file_value": "",
"db_value": "",
"fixable": false
},
{
"severity": "WARN",
"check_id": "C-35",
"message": "Repo Manager contradictory: workplans/archived/260702-railiance-apps-WP-0004-app-deployment-improvements.md#task-block-6: task id 'RAILIANCE-WP-0004-I06' is not accepted by the canon kind registry",
"file_path": "workplans/archived/260702-railiance-apps-WP-0004-app-deployment-improvements.md#task-block-6",
"db_id": "",
"file_value": "",
"db_value": "",
"fixable": false
},
{
"severity": "WARN",
"check_id": "C-35",
"message": "Repo Manager contradictory: workplans/archived/260702-railiance-apps-WP-0004-app-deployment-improvements.md#task-block-7: task id 'RAILIANCE-WP-0004-I07' is not accepted by the canon kind registry",
"file_path": "workplans/archived/260702-railiance-apps-WP-0004-app-deployment-improvements.md#task-block-7",
"db_id": "",
"file_value": "",
"db_value": "",
"fixable": false
},
{
"severity": "WARN",
"check_id": "C-31",
"message": "[workplans/archived/260702-railiance-apps-WP-0004-app-deployment-improvements.md] id 'RAILIANCE-WP-0004-I01' matches no kind in the canon work-record type registry \u2014 unregistered species become sidetracks needing manual reintegration (work-record-types_v0.1)",
"file_path": "",
"db_id": "",
"file_value": "",
"db_value": "",
"fixable": false
},
{
"severity": "WARN",
"check_id": "C-31",
"message": "[workplans/archived/260702-railiance-apps-WP-0004-app-deployment-improvements.md] id 'RAILIANCE-WP-0004-I02' matches no kind in the canon work-record type registry \u2014 unregistered species become sidetracks needing manual reintegration (work-record-types_v0.1)",
"file_path": "",
"db_id": "",
"file_value": "",
"db_value": "",
"fixable": false
},
{
"severity": "WARN",
"check_id": "C-31",
"message": "[workplans/archived/260702-railiance-apps-WP-0004-app-deployment-improvements.md] id 'RAILIANCE-WP-0004-I03' matches no kind in the canon work-record type registry \u2014 unregistered species become sidetracks needing manual reintegration (work-record-types_v0.1)",
"file_path": "",
"db_id": "",
"file_value": "",
"db_value": "",
"fixable": false
},
{
"severity": "WARN",
"check_id": "C-31",
"message": "[workplans/archived/260702-railiance-apps-WP-0004-app-deployment-improvements.md] id 'RAILIANCE-WP-0004-I04' matches no kind in the canon work-record type registry \u2014 unregistered species become sidetracks needing manual reintegration (work-record-types_v0.1)",
"file_path": "",
"db_id": "",
"file_value": "",
"db_value": "",
"fixable": false
},
{
"severity": "WARN",
"check_id": "C-31",
"message": "[workplans/archived/260702-railiance-apps-WP-0004-app-deployment-improvements.md] id 'RAILIANCE-WP-0004-I05' matches no kind in the canon work-record type registry \u2014 unregistered species become sidetracks needing manual reintegration (work-record-types_v0.1)",
"file_path": "",
"db_id": "",
"file_value": "",
"db_value": "",
"fixable": false
},
{
"severity": "WARN",
"check_id": "C-31",
"message": "[workplans/archived/260702-railiance-apps-WP-0004-app-deployment-improvements.md] id 'RAILIANCE-WP-0004-I06' matches no kind in the canon work-record type registry \u2014 unregistered species become sidetracks needing manual reintegration (work-record-types_v0.1)",
"file_path": "",
"db_id": "",
"file_value": "",
"db_value": "",
"fixable": false
},
{
"severity": "WARN",
"check_id": "C-31",
"message": "[workplans/archived/260702-railiance-apps-WP-0004-app-deployment-improvements.md] id 'RAILIANCE-WP-0004-I07' matches no kind in the canon work-record type registry \u2014 unregistered species become sidetracks needing manual reintegration (work-record-types_v0.1)",
"file_path": "",
"db_id": "",
"file_value": "",
"db_value": "",
"fixable": false
},
{
"severity": "WARN",
"check_id": "C-33",
"message": "WORK-RECORDS.md is missing or stale \u2014 regenerate via fix-consistency (CUST-WP-0061-T04 generated work-record index)",
"file_path": "WORK-RECORDS.md",
"db_id": "",
"file_value": "",
"db_value": "",
"fixable": true
},
{
"severity": "WARN",
"check_id": "C-39",
"message": "Wait task 'RAPPS-WP-0015-T04' in workplan 'RAPPS-WP-0015' has neither depends_on, needs_human: true, blocked_on: message-from:\u2026 nor wait_until \u2014 unqualified wait",
"file_path": "workplans/RAPPS-WP-0015-coulomb-personal-content-release.md#RAPPS-WP-0015-T04",
"db_id": "",
"file_value": "wait",
"db_value": "",
"fixable": false
},
{
"severity": "WARN",
"check_id": "C-20",
"message": "Workplan dependency target 'KEY-WP-0038' is not linked to State Hub",
"file_path": "workplans/RAPPS-WP-0016-forgejo-netkingdom-login.md",
"db_id": "",
"file_value": "KEY-WP-0038",
"db_value": "",
"fixable": false
},
{
"severity": "WARN",
"check_id": "C-39",
"message": "Human wait task 'RAPPS-WP-0016-T04' in workplan 'RAPPS-WP-0016' has needs_human: true without decision_id \u2014 unrouted human gate",
"file_path": "workplans/RAPPS-WP-0016-forgejo-netkingdom-login.md#RAPPS-WP-0016-T04",
"db_id": "",
"file_value": "needs_human: true",
"db_value": "",
"fixable": false
},
{
"severity": "WARN",
"check_id": "C-22",
"message": "Task description drift 'RAPPS-WP-0016-T08': file content differs from DB (file wins)",
"file_path": "workplans/RAPPS-WP-0016-forgejo-netkingdom-login.md#RAPPS-WP-0016-T08",
"db_id": "4ab8a5e7-ab32-5ee2-aaf2-6da246d1b0c8",
"file_value": "Implement actual owner database primitives that record operation intent/outcome\nin the same durable database, compare co",
"db_value": "Implement actual owner database primitives that record operation intent/outcome\nin the same durable database, compare co",
"fixable": true
},
{
"severity": "WARN",
"check_id": "C-20",
"message": "Workplan dependency target 'RPF-WP-0058' is not linked to State Hub",
"file_path": "workplans/RAPPS-WP-0017-reuse-private-reader-release.md",
"db_id": "",
"file_value": "RPF-WP-0058",
"db_value": "",
"fixable": false
},
{
"severity": "WARN",
"check_id": "C-20",
"message": "Workplan dependency target 'REUSE-WP-0025' is not linked to State Hub",
"file_path": "workplans/RAPPS-WP-0017-reuse-private-reader-release.md",
"db_id": "",
"file_value": "REUSE-WP-0025",
"db_value": "",
"fixable": false
},
{
"severity": "INFO",
"check_id": "C-08",
"message": "Retired DB workstream 'railiance-wp-0006@retired-20260826' (id=1960b22b\u2026, status=finished) has no backing workplan file \u2014 projection tombstone, not live work",
"file_path": "",
"db_id": "1960b22b-82ae-4b67-9fff-397bd38bdd65",
"file_value": "",
"db_value": "",
"fixable": false
},
{
"severity": "INFO",
"check_id": "C-08",
"message": "Retired DB workstream 'railiance-wp-0005@retired-20260826' (id=685f1c18\u2026, status=finished) has no backing workplan file \u2014 projection tombstone, not live work",
"file_path": "",
"db_id": "685f1c18-33c0-400d-a2b1-e1dae0f27c3e",
"file_value": "",
"db_value": "",
"fixable": false
},
{
"severity": "INFO",
"check_id": "C-08",
"message": "Retired DB workstream 'railiance-wp-0009@retired-20260826' (id=21c3fcdc\u2026, status=finished) has no backing workplan file \u2014 projection tombstone, not live work",
"file_path": "",
"db_id": "21c3fcdc-f014-4858-8028-0ac3038212b7",
"file_value": "",
"db_value": "",
"fixable": false
},
{
"severity": "INFO",
"check_id": "C-08",
"message": "Retired DB workstream 'railiance-wp-0011@retired-20260826' (id=98cf42ae\u2026, status=finished) has no backing workplan file \u2014 projection tombstone, not live work",
"file_path": "",
"db_id": "98cf42ae-9b64-4736-97e1-bae325ded1f9",
"file_value": "",
"db_value": "",
"fixable": false
},
{
"severity": "INFO",
"check_id": "C-08",
"message": "Retired DB workstream 'railiance-wp-0008@retired-20260826' (id=41b9deea\u2026, status=finished) has no backing workplan file \u2014 projection tombstone, not live work",
"file_path": "",
"db_id": "41b9deea-a935-4372-8916-b3981336f597",
"file_value": "",
"db_value": "",
"fixable": false
},
{
"severity": "INFO",
"check_id": "C-08",
"message": "Retired DB workstream 'railiance-wp-0018@retired-20260826' (id=1b9af4e8\u2026, status=finished) has no backing workplan file \u2014 projection tombstone, not live work",
"file_path": "",
"db_id": "1b9af4e8-7579-5141-837b-c736b85204a0",
"file_value": "",
"db_value": "",
"fixable": false
},
{
"severity": "INFO",
"check_id": "C-08",
"message": "Retired DB workstream 'railiance-wp-0007@retired-20260826' (id=7da18dd8\u2026, status=finished) has no backing workplan file \u2014 projection tombstone, not live work",
"file_path": "",
"db_id": "7da18dd8-76b9-4a70-b9d7-de541afc65c0",
"file_value": "",
"db_value": "",
"fixable": false
},
{
"severity": "INFO",
"check_id": "C-08",
"message": "Retired DB workstream 'railiance-wp-0010@retired-20260826' (id=a4f301bb\u2026, status=finished) has no backing workplan file \u2014 projection tombstone, not live work",
"file_path": "",
"db_id": "a4f301bb-3f49-450a-8dbd-5cf6a16b8e0f",
"file_value": "",
"db_value": "",
"fixable": false
},
{
"severity": "WARN",
"check_id": "C-28",
"message": "2 unread inbox message(s) older than 3 day(s): the-custodian:23172cb2, the-custodian:51e9eace",
"file_path": "",
"db_id": "",
"file_value": "",
"db_value": "",
"fixable": false
},
{
"severity": "WARN",
"check_id": "C-28",
"message": "2 unread message(s) lack thread_id for supersession tracking: the-custodian:23172cb2, the-custodian:51e9eace",
"file_path": "",
"db_id": "",
"file_value": "",
"db_value": "",
"fixable": false
},
{
"severity": "WARN",
"check_id": "C-26",
"message": "Workplan id 'RAIL-AP-WP-0001' uses prefix 'RAIL-AP-WP' but repo canonical prefix is 'RAPPS-WP' \u2014 new plans must conform",
"file_path": "workplans/archived/260605-RAIL-AP-WP-0001-gitea-container-registry.md",
"db_id": "",
"file_value": "RAIL-AP-WP-0001",
"db_value": "RAPPS-WP",
"fixable": false
},
{
"severity": "WARN",
"check_id": "C-26",
"message": "Workplan id 'RAILIANCE-WP-0002' uses prefix 'RAILIANCE-WP' but repo canonical prefix is 'RAPPS-WP' \u2014 new plans must conform",
"file_path": "workplans/archived/260702-railiance-apps-WP-0002-vergabe-teilnahme-on-railiance01.md",
"db_id": "",
"file_value": "RAILIANCE-WP-0002",
"db_value": "RAPPS-WP",
"fixable": false
},
{
"severity": "WARN",
"check_id": "C-26",
"message": "Workplan id 'RAILIANCE-WP-0004' uses prefix 'RAILIANCE-WP' but repo canonical prefix is 'RAPPS-WP' \u2014 new plans must conform",
"file_path": "workplans/archived/260702-railiance-apps-WP-0004-app-deployment-improvements.md",
"db_id": "",
"file_value": "RAILIANCE-WP-0004",
"db_value": "RAPPS-WP",
"fixable": false
}
],
"fixes_applied": [
"bindings: synced 20/20",
"C-17 cleared: pushed 1 backlogged commit(s)",
"C-33 fixed: regenerated WORK-RECORDS.md",
"C-22 fixed: task 4ab8a5e7\u2026 description updated",
"brief: .custodian-brief.md updated",
"push: pushed"
],
"summary": {
"fail": 0,
"automation_error": 0,
"warn": 29,
"info": 8
},
"result": "warn"
}

View file

@ -0,0 +1 @@
WARN: git commit failed for writeback: Generated-only commits rejected: staged

View file

@ -0,0 +1,172 @@
{
"ok": true,
"status": "applied",
"repo_slug": "railiance-apps",
"commit": "308e83fcfbf9ec98dbe6b0286cbe8ec7be8899b3",
"requests": 2,
"elapsed_ms": 2055.9,
"git": {
"upstream": "origin/main",
"behind": 0,
"ahead": 0
},
"identifiers": {
"schema": "repo-manager.identifier-assignment.v1",
"ok": true,
"executed": true,
"repo": "railiance-apps",
"namespace": "helixforge",
"assignments": [],
"historical_invalid_identifiers": [
{
"kind": "task",
"id": "RAILIANCE-WP-0004-I01",
"source": "workplans/archived/260702-railiance-apps-WP-0004-app-deployment-improvements.md#task-block-1"
},
{
"kind": "task",
"id": "RAILIANCE-WP-0004-I02",
"source": "workplans/archived/260702-railiance-apps-WP-0004-app-deployment-improvements.md#task-block-2"
},
{
"kind": "task",
"id": "RAILIANCE-WP-0004-I03",
"source": "workplans/archived/260702-railiance-apps-WP-0004-app-deployment-improvements.md#task-block-3"
},
{
"kind": "task",
"id": "RAILIANCE-WP-0004-I04",
"source": "workplans/archived/260702-railiance-apps-WP-0004-app-deployment-improvements.md#task-block-4"
},
{
"kind": "task",
"id": "RAILIANCE-WP-0004-I05",
"source": "workplans/archived/260702-railiance-apps-WP-0004-app-deployment-improvements.md#task-block-5"
},
{
"kind": "task",
"id": "RAILIANCE-WP-0004-I06",
"source": "workplans/archived/260702-railiance-apps-WP-0004-app-deployment-improvements.md#task-block-6"
},
{
"kind": "task",
"id": "RAILIANCE-WP-0004-I07",
"source": "workplans/archived/260702-railiance-apps-WP-0004-app-deployment-improvements.md#task-block-7"
}
],
"historical_identity_collisions": [],
"files_changed": []
},
"receipt": {
"schema": "state-hub.repository-projection-reconcile.v1",
"instance_role": "primary",
"instance_label": "railiance01",
"expected_commit": "308e83fcfbf9ec98dbe6b0286cbe8ec7be8899b3",
"derived_commit": "308e83fcfbf9ec98dbe6b0286cbe8ec7be8899b3",
"outcome": {
"schema": "state-hub.projection-reset.v1",
"repo_slug": "railiance-apps",
"commit": "308e83fcfbf9ec98dbe6b0286cbe8ec7be8899b3",
"status": "applied",
"counts": {
"created": 0,
"updated": 20,
"retired": 0,
"refused": 0,
"released": 0,
"created_tasks": 0,
"updated_tasks": 0,
"cancelled_tasks": 0,
"created_edges": 0,
"removed_edges": 0,
"unresolved_edges": 0,
"external_edges": 5
},
"created": [],
"updated": [
"RAIL-AP-WP-0001",
"RAILIANCE-WP-0002",
"RAILIANCE-WP-0004",
"RAPPS-WP-0001",
"RAPPS-WP-0002",
"RAPPS-WP-0003",
"RAPPS-WP-0004",
"RAPPS-WP-0005",
"RAPPS-WP-0006",
"RAPPS-WP-0007",
"RAPPS-WP-0008",
"RAPPS-WP-0009",
"RAPPS-WP-0010",
"RAPPS-WP-0011",
"RAPPS-WP-0012",
"RAPPS-WP-0013",
"RAPPS-WP-0014",
"RAPPS-WP-0015",
"RAPPS-WP-0016",
"RAPPS-WP-0017"
],
"retired": [],
"released": [],
"created_tasks": [],
"updated_tasks": [],
"cancelled_tasks": [],
"created_edges": [],
"removed_edges": [],
"unresolved_edges": [],
"external_edges": [
{
"workplan": "RAPPS-WP-0016",
"from": "RAPPS-WP-0016-T02",
"target": "RAPPS-WP-0016-T01",
"relationship_type": "starts_after",
"from_workplan_id": "f6b1d6f6-0abb-5774-87b9-bf3cfb640a3b",
"from_task_id": "13cd3aec-c87d-5d3f-a421-39d8ff131edd",
"to_workplan_id": null,
"to_task_id": "98004ed0-83e6-5f6e-9b18-15b8b2aec2e7"
},
{
"workplan": "RAPPS-WP-0016",
"from": "RAPPS-WP-0016-T02",
"target": "KEY-WP-0038-T02",
"relationship_type": "starts_after",
"from_workplan_id": "f6b1d6f6-0abb-5774-87b9-bf3cfb640a3b",
"from_task_id": "13cd3aec-c87d-5d3f-a421-39d8ff131edd",
"to_workplan_id": null,
"to_task_id": "ddcfb482-8f33-5c81-9ce8-84be8fa5dc30"
},
{
"workplan": "RAPPS-WP-0016",
"from": "RAPPS-WP-0016-T04",
"target": "RAPPS-WP-0016-T03",
"relationship_type": "starts_after",
"from_workplan_id": "f6b1d6f6-0abb-5774-87b9-bf3cfb640a3b",
"from_task_id": "32c54737-c40f-5fde-9b91-163f8dcb0068",
"to_workplan_id": null,
"to_task_id": "81f072aa-c316-511e-a2cd-21dd1b1d0a00"
},
{
"workplan": "RAPPS-WP-0016",
"from": "RAPPS-WP-0016-T05",
"target": "RAPPS-WP-0016-T02",
"relationship_type": "starts_after",
"from_workplan_id": "f6b1d6f6-0abb-5774-87b9-bf3cfb640a3b",
"from_task_id": "728786c9-f1f9-5983-a6a4-dea21faf67f5",
"to_workplan_id": null,
"to_task_id": "13cd3aec-c87d-5d3f-a421-39d8ff131edd"
},
{
"workplan": "RAPPS-WP-0016",
"from": "RAPPS-WP-0016-T03",
"target": "RAPPS-WP-0016-T02",
"relationship_type": "starts_after",
"from_workplan_id": "f6b1d6f6-0abb-5774-87b9-bf3cfb640a3b",
"from_task_id": "81f072aa-c316-511e-a2cd-21dd1b1d0a00",
"to_workplan_id": null,
"to_task_id": "13cd3aec-c87d-5d3f-a421-39d8ff131edd"
}
],
"refused": [],
"notes": []
}
}
}

View file

@ -0,0 +1,25 @@
{
"exit_code": 0,
"commit": "308e83fcfbf9ec98dbe6b0286cbe8ec7be8899b3",
"base": "3fb031a47ff5379358fd8cc230b40961b3b5d3a8",
"files": [
{
"path": "build/forgejo/inputs.lock.json",
"sha256": "5a4d0e5126b6b9dd66fe2828ff78bfe6ac0cadc34b96ca739225d622b963b768"
},
{
"path": "build/forgejo/forgejo-security-extension.patch",
"sha256": "feb1079399a43989742ae0a946c1ada50113d1821e6541f97f0b5592ee1fc20c"
},
{
"path": "build/forgejo/README.md",
"sha256": "8e4edcfa386efe78e4df0b36f8463d229450cd12fc20b46efdba387f7f21bdfe"
},
{
"path": "workplans/RAPPS-WP-0016-forgejo-netkingdom-login.md",
"sha256": "58d09d6af665bd7ad8981f87ccad5552d78f749432cfe21703d6c2a30f8bdbae"
}
],
"stdout": "[main 308e83f] Verify Forgejo PostgreSQL operations and preserve tracing hook context\n 4 files changed, 521 insertions(+), 9 deletions(-)\n",
"stderr": ""
}

View file

@ -0,0 +1,23 @@
{
"owner": "railiance-apps",
"base_revision": "3fb031a47ff5379358fd8cc230b40961b3b5d3a8",
"message": "Verify Forgejo PostgreSQL operations and preserve tracing hook context",
"files": [
{
"path": "build/forgejo/inputs.lock.json",
"sha256": "5a4d0e5126b6b9dd66fe2828ff78bfe6ac0cadc34b96ca739225d622b963b768"
},
{
"path": "build/forgejo/forgejo-security-extension.patch",
"sha256": "feb1079399a43989742ae0a946c1ada50113d1821e6541f97f0b5592ee1fc20c"
},
{
"path": "build/forgejo/README.md",
"sha256": "8e4edcfa386efe78e4df0b36f8463d229450cd12fc20b46efdba387f7f21bdfe"
},
{
"path": "workplans/RAPPS-WP-0016-forgejo-netkingdom-login.md",
"sha256": "58d09d6af665bd7ad8981f87ccad5552d78f749432cfe21703d6c2a30f8bdbae"
}
]
}

View file

@ -0,0 +1,36 @@
{
"owner": "railiance-apps",
"base_revision": "git:3fb031a47ff5379358fd8cc230b40961b3b5d3a8",
"files": [
{
"path": "build/forgejo/inputs.lock.json",
"source": "/home/worsch/the-custodian/docs/changes/netkingdom-target-2026-10-18/forgejo-postgres-source-r1/release-source/build/forgejo/inputs.lock.json",
"before_sha256": "acf9859d1b1009d1afe0844f2068f9b95cfadb176591edce0ec42084604e4d65",
"sha256": "5a4d0e5126b6b9dd66fe2828ff78bfe6ac0cadc34b96ca739225d622b963b768"
},
{
"path": "build/forgejo/forgejo-security-extension.patch",
"source": "/home/worsch/the-custodian/docs/changes/netkingdom-target-2026-10-18/forgejo-postgres-source-r1/release-source/build/forgejo/forgejo-security-extension.patch",
"before_sha256": "15cb7f13b1b1d1095cc344176ca337f705333a436a70ae803fcfd3d7f802ccf4",
"sha256": "feb1079399a43989742ae0a946c1ada50113d1821e6541f97f0b5592ee1fc20c"
},
{
"path": "build/forgejo/README.md",
"source": "/home/worsch/the-custodian/docs/changes/netkingdom-target-2026-10-18/forgejo-postgres-source-r1/release-source/build/forgejo/README.md",
"before_sha256": "6250821cc41d10b92e6d91dde1f2b59b53a9d47d78ada3a597c9d039549c0da4",
"sha256": "8e4edcfa386efe78e4df0b36f8463d229450cd12fc20b46efdba387f7f21bdfe"
},
{
"path": "workplans/RAPPS-WP-0016-forgejo-netkingdom-login.md",
"source": "/home/worsch/the-custodian/docs/changes/netkingdom-target-2026-10-18/forgejo-postgres-source-r1/owner-integration/workplan.md",
"before_sha256": "95b48b308d5154f87355b2c230dc9990241aeeb37c2094e164952150ed2fd258",
"sha256": "58d09d6af665bd7ad8981f87ccad5552d78f749432cfe21703d6c2a30f8bdbae"
}
],
"preserved_other_tracked_files": 224,
"original_task_uuids_preserved": 9,
"status_change": null,
"native_actions": false,
"independent_owner_review": false,
"operational_admission": false
}

View file

@ -0,0 +1,32 @@
{
"owner": "railiance-apps",
"base_revision": "3fb031a47ff5379358fd8cc230b40961b3b5d3a8",
"files": [
{
"path": "build/forgejo/inputs.lock.json",
"source": "/home/worsch/the-custodian/docs/changes/netkingdom-target-2026-10-18/forgejo-postgres-source-r1/release-source/build/forgejo/inputs.lock.json",
"before_sha256": "acf9859d1b1009d1afe0844f2068f9b95cfadb176591edce0ec42084604e4d65",
"sha256": "5a4d0e5126b6b9dd66fe2828ff78bfe6ac0cadc34b96ca739225d622b963b768"
},
{
"path": "build/forgejo/forgejo-security-extension.patch",
"source": "/home/worsch/the-custodian/docs/changes/netkingdom-target-2026-10-18/forgejo-postgres-source-r1/release-source/build/forgejo/forgejo-security-extension.patch",
"before_sha256": "15cb7f13b1b1d1095cc344176ca337f705333a436a70ae803fcfd3d7f802ccf4",
"sha256": "feb1079399a43989742ae0a946c1ada50113d1821e6541f97f0b5592ee1fc20c"
},
{
"path": "build/forgejo/README.md",
"source": "/home/worsch/the-custodian/docs/changes/netkingdom-target-2026-10-18/forgejo-postgres-source-r1/release-source/build/forgejo/README.md",
"before_sha256": "6250821cc41d10b92e6d91dde1f2b59b53a9d47d78ada3a597c9d039549c0da4",
"sha256": "8e4edcfa386efe78e4df0b36f8463d229450cd12fc20b46efdba387f7f21bdfe"
},
{
"path": "workplans/RAPPS-WP-0016-forgejo-netkingdom-login.md",
"source": "/home/worsch/the-custodian/docs/changes/netkingdom-target-2026-10-18/forgejo-postgres-source-r1/owner-integration/workplan.md",
"before_sha256": "95b48b308d5154f87355b2c230dc9990241aeeb37c2094e164952150ed2fd258",
"sha256": "58d09d6af665bd7ad8981f87ccad5552d78f749432cfe21703d6c2a30f8bdbae"
}
],
"native_actions": false,
"independent_owner_review": false
}

View file

@ -0,0 +1,283 @@
---
id: RAPPS-WP-0016
type: workplan
title: "Forgejo sign-in through NetKingdom, before the forge closes"
domain: infotech
repo: railiance-apps
status: active
flavor: implementation
owner: claude-code
topic_slug: railiance
created: "2026-10-08"
updated: "2026-10-18"
depends_on:
- KEY-WP-0038
related_repos:
- prj-forgejo-org-refactor
- key-cape
- railiance-platform
state_hub_workstream_id: "f6b1d6f6-0abb-5774-87b9-bf3cfb640a3b"
---
# RAPPS-WP-0016 - Forgejo sign-in through NetKingdom, before the forge closes
## Why
`forgejo.coulomb.social` is closing: private by default, no anonymous access
(prj-forgejo-org-refactor ORGREF-WP-0002, decision
`decisions/forge-visibility-policy.md`). The founder's condition is that sign-in
runs through NetKingdom first. railiance-apps owns the Forgejo Helm release
(`docs/forgejo-on-railiance01.md`: S5 Helm release, ingress, operator Makefile),
so the Forgejo side lands here. This plan is ORGREF-WP-0002-T05. The NetKingdom
side is key-cape `KEY-WP-0038`.
## Boundaries
- **Founder guardrail:** tighten gradually; never lock anyone out; never risk
assets; never reach a state that is hard to repair. Every step keeps the
current sign-in path working until the new one is proven.
- **No visibility change** in this plan. Repositories, packages and
`REQUIRE_SIGNIN_VIEW` are ORGREF-WP-0002-T08.
- **Configuration in git.** The authentication source is declared in
`helm/forgejo-values.yaml` (`gitea.oauth`), with its secret drawn from an
ExternalSecret over OpenBao. No click-ops, and no secret value in git.
- Open registration is already disabled (`service.DISABLE_REGISTRATION: true`).
This plan keeps it that way.
## Tasks
```task
id: RAPPS-WP-0016-T01
status: done
priority: high
state_hub_task_id: "98004ed0-83e6-5f6e-9b18-15b8b2aec2e7"
```
### T01 — Make the local administrator a sealed break-glass
Before anything about sign-in changes: confirm the local administrator account
works, keep its credential only in OpenBao, and document recovery (who, how,
where it is logged) in `docs/forgejo-on-railiance01.md`. Verify one break-glass
sign-in and record it without the credential.
Acceptance: a recorded break-glass sign-in, with the recovery path written down.
This is the "never lock ourselves out" floor for every later step.
Done 2026-10-17: founder sealed `forgejo_admin` into OpenBao
`platform/workloads/forgejo/break-glass-admin` (version 1) and verified a local
sign-in (HTTP 200, site admin): `docs/evidence/2026-10-17-forgejo-breakglass-signin.json`.
Recovery path: `docs/forgejo-on-railiance01.md` § Break-glass administrator.
```task
id: RAPPS-WP-0016-T02
status: wait
depends_on: [RAPPS-WP-0016-T01, KEY-WP-0038-T02]
blocking_reason: "Break-glass done (T01); needs the NetKingdom client registered with its secret in custody (KEY-WP-0038-T02)."
priority: high
state_hub_task_id: "13cd3aec-c87d-5d3f-a421-39d8ff131edd"
```
### T02 — Add the NetKingdom authentication source
- an ExternalSecret delivering the `forgejo` client secret from OpenBao to a
Secret in the `forgejo` namespace. Custody path is
`platform/workloads/keycape/forgejo`, field `CLIENT_SECRET`, read by ESO through
Kubernetes-auth role `external-secrets-keycape-forgejo-forgejo`, which carries
only policy `workload-kv-read-keycape-forgejo-forgejo` (net-kingdom 074b3a0;
replaces the earlier `platform/workloads/forgejo/netkingdom-oidc-client` proposal). The
SA/SecretStore/ExternalSecret shape follows the NK-WP-0048
`deliver-consumer-secret` receipt contract
(`docs/evidence/nk48-t16-owner-review/owner-review-railiance-apps.json`)
- `gitea.oauth`: name `netkingdom` (must match the redirect URI registered in
key-cape), provider `openidConnect`, auto-discovery from
`https://kc.coulomb.social/.well-known/openid-configuration`, scopes
`openid profile email groups`, group-claim name `groups`
- `oauth2_client` settings: no automatic account creation for unknown subjects;
account linking to existing local accounts by username after a successful
local sign-in (so the founder and agent accounts keep their history)
- Helm upgrade with the previous revision noted for rollback
Local password sign-in stays enabled.
Acceptance: the "Sign in with netkingdom" option appears. Local sign-in still
works. Rollback is one `helm rollback` to the noted revision.
```task
id: RAPPS-WP-0016-T03
status: wait
depends_on: [RAPPS-WP-0016-T02]
blocking_reason: "Linking and team mapping follow a working authentication source."
priority: high
state_hub_task_id: "81f072aa-c316-511e-a2cd-21dd1b1d0a00"
```
### T03 — Link accounts and map groups to teams
- The founder links their account through NetKingdom (MFA), then signs in again
through NetKingdom only and sees the same repositories, organisations and
admin rights.
- Map NetKingdom groups (names agreed in KEY-WP-0038-T01) to organisation teams:
owners and readers at least. Create the read-only teams that
ORGREF-WP-0002-T06 consumers will use.
- Apply KEY-WP-0038-T03's decision on agents and services: NetKingdom sign-in, or
scoped tokens bound to service identities.
Acceptance: founder and one agent work through NetKingdom; group-to-team mapping
verified by adding and removing one test membership; break-glass still works.
```task
id: RAPPS-WP-0016-T04
status: wait
depends_on: [RAPPS-WP-0016-T03]
needs_human: true
blocking_reason: "Restricting local password sign-in is a founder decision once NetKingdom sign-in is proven."
priority: medium
state_hub_task_id: "32c54737-c40f-5fde-9b91-163f8dcb0068"
```
### T04 — Decide on local password sign-in
Once NetKingdom sign-in has been used for a while without problems, the founder
decides whether local password sign-in is turned off for everyone except
break-glass. This is not required to close the forge; it is the next tightening
step, taken separately.
```task
id: RAPPS-WP-0016-T05
status: wait
depends_on: [RAPPS-WP-0016-T02]
blocking_reason: "Waits for net-kingdom's answer to the Apps 1.3 needs-change record (the-custodian docs/changes/netkingdom-target-2026-10-17/nk48-1.3-owner-review/owner-review-railiance-apps.json: RAPPS-1.3-C1..C3) and the re-frozen 1.3 candidate."
priority: medium
state_hub_task_id: "728786c9-f1f9-5983-a6a4-dea21faf67f5"
```
### T05 — Apps owner seams for NK-WP-0048 consumer steps
Implement the real Apps capabilities behind the `deliver-consumer-secret` and
`hand-over` adapters, as owner-run paths (option C): `owner_apply` /
`owner_remove` emitting `netkingdom.consumer-secret-delivery.v1` receipts from the
T02 objects; a consumer verifier that observes Forgejo sign-in and the T03
positive/negative group probes; and a committed-evidence hand-over receipt store.
See the owner-review record for the contract.
Acceptance: receipts produced from the live T02/T03 run validate against the
adapters' checks with no value-bearing keys.
## Also in scope: stale node credential
The k3s `registries.yaml` on railiance01 still holds a login for the frozen Gitea
host `92.205.130.254` (ORGREF-WP-0002-T02). Coordinate its removal with the node
owner when ORGREF-WP-0002-T06 adds the forge registry login, in the same change.
## T06 — Package the reviewed consumer source through the Apps build path
```task
id: RAPPS-WP-0016-T06
status: done
priority: high
state_hub_task_id: "08ab8921-7801-5309-b84b-bc2a3ceea1e4"
```
Completed 2026-10-18, source build tooling only. The existing Apps Makefile now
has explicit prepare, public-dependency acquisition, offline build, artifact
verification and local OCI export targets for the pinned official Forgejo11.0.3
source plus reviewed multi-value claim patch. Source/toolchains/locks/compiler
inputs/base image are fixed. Third-party application source stays in a new /tmp
workspace; Apps holds the release input lock, patch and build recipe.
The original build profile produced identical frontend assets, bindata sources
and complete static executable in two workspaces, and identical local OCI
archives in two no-cache exports. Independent review then found host process
argv visibility through /proc (APPSBUILD-R1-F01). The revised recipe adds a
private PID namespace; exact source and synthetic canary regression are separately
reviewed. The original full builds are historical r1-profile evidence; no full
r2 build is claimed. Original packet/review and failure history remain in
Custodian apps-forgejo-release-build-r1 and apps-release-independent-review-r1;
the correction is apps-forgejo-release-build-r2. This is coordinator source
integration after independent technical review, not formal owner assent or image
admission. Helm values, deployed image, local sign-in and visibility are unchanged.
NK-WP-0048-T39 remains progress for the full release acceptance scope.
## T07 — Keep the client secret out of process arguments
```task
id: RAPPS-WP-0016-T07
status: progress
priority: high
state_hub_task_id: "786d6584-6db1-5a10-9324-d7b94db0df94"
```
Implement and independently review a real Forgejo add/update --secret-file path
and the actual chart helper/mount adaptation. Preserve the existing CLIENT_SECRET
key and custody route; use no agent-value argument or environment fallback. Test
bounded stable nofollow file reads, exact existing minted-secret encoding,
mutual exclusion/update preservation, fixed errors and actual Helm rendering.
Private mount identity/reader set and new package/type revisions need explicit
owner/runtime admission. The in-progress isolated candidate is Custodian
forgejo-private-input-r1; source completion is distinct from T02 native delivery.
## T08 — Provide a transactional application-source inverse and durable recovery
```task
id: RAPPS-WP-0016-T08
status: progress
priority: high
state_hub_task_id: "4ab8a5e7-ab32-5ee2-aaf2-6da246d1b0c8"
```
Implement actual owner database primitives that record operation intent/outcome
in the same durable database, compare complete raw persisted before/post/current
source state privately, and serialize conflicting application writers at the DB
boundary. Never emit stored credential/config bytes or delete/detach linked users
or a preexisting/shared source. SQLite and PostgreSQL transaction semantics must
be tested against the real app packages; unsupported backends refuse.
T05 and NK-WP-0048-T34 additionally require actual authenticated execution and
fresh inverse sessions, admitted evidence/recovery and exclusion of every release
writer, including Helm/runtime writers. The candidate DB primitive alone does
not establish those facilities. Helm rollback/omission does not remove persisted
OAuth sources: verify the exact app-state inverse before any image downgrade.
If links prevent removal, retain the extended image and reconcile. The earlier
T02 single-Helm-rollback statement is not sufficient recovery for this extension;
its historical text is retained and corrected here.
## T09 — Enforce authenticated Access Engine decisions in the application path
```task
id: RAPPS-WP-0016-T09
status: progress
priority: high
state_hub_task_id: "d3804638-c73d-5b9f-a456-4262f62f9e6b"
```
Use the producer-owned decision format/canonical bytes and independently admitted
signer/policy/request pins. Forgejo must verify the caller's issuer/tenant and
assurance facts, obtain and authenticate the exact Access Engine resource/action
decision, and refuse missing, stale, wrong-pin, unavailable or malformed replies.
Keep the original three-group any-of access set as policy input; its local
compatibility gate is not a substitute PDP or an architecture exception. An
issuer allowed/denied claim cannot manufacture authorization. Source integration
needs real provider/callback/session wiring and meaningful producer-consumer
positive/adverse tests before re-freezing the case and package. Existing break-
glass/local account and linking behavior remain within the declared owner scope.
2026-10-18 source continuation for T07/T08/T09: the digest-bound build
candidate now composes all 37 paths, including private secret-file input, actual
source-state transactions/private SQL hooks, the producer-owned Access Engine
Check client from ca0cb757 and guarded OIDC callback enforcement. The parser uses
the actual KeyCape typed assurance/authentication-time/provenance contract; its
actual issuer fixture/callback suite passes 71 test/subtest results, and selected
composed packages pass 93 with no skips. The previous incompatible-string-claim
rejection is retained. All patch postimages independently replay from the pinned
official archive. Complete release build/verification is tracked in Custodian
forgejo-keycape-claims-r1; earlier release outputs do not prove this revision.
This is coordinator source integration of a tested build candidate; independent
owner review and formal operational admission remain open. T07's chart/private
mount admission, T08's fresh authenticated operation/inverse and release-wide
writer exclusion, T09's ongoing HTTP/API/Git/SSH paths, private evidence/retention,
PostgreSQL/native proof and actual issuer/factor/custody acceptance remain open.
No trust, deployed image, Helm values, source DB, user/link state or local sign-in
is changed by this build-source update. The preserved legacy patch is historical;
the input lock now explicitly selects forgejo-security-extension.patch.

View file

@ -0,0 +1,310 @@
---
id: RAPPS-WP-0016
type: workplan
title: "Forgejo sign-in through NetKingdom, before the forge closes"
domain: infotech
repo: railiance-apps
status: active
flavor: implementation
owner: claude-code
topic_slug: railiance
created: "2026-10-08"
updated: "2026-10-18"
depends_on:
- KEY-WP-0038
related_repos:
- prj-forgejo-org-refactor
- key-cape
- railiance-platform
state_hub_workstream_id: "f6b1d6f6-0abb-5774-87b9-bf3cfb640a3b"
---
# RAPPS-WP-0016 - Forgejo sign-in through NetKingdom, before the forge closes
## Why
`forgejo.coulomb.social` is closing: private by default, no anonymous access
(prj-forgejo-org-refactor ORGREF-WP-0002, decision
`decisions/forge-visibility-policy.md`). The founder's condition is that sign-in
runs through NetKingdom first. railiance-apps owns the Forgejo Helm release
(`docs/forgejo-on-railiance01.md`: S5 Helm release, ingress, operator Makefile),
so the Forgejo side lands here. This plan is ORGREF-WP-0002-T05. The NetKingdom
side is key-cape `KEY-WP-0038`.
## Boundaries
- **Founder guardrail:** tighten gradually; never lock anyone out; never risk
assets; never reach a state that is hard to repair. Every step keeps the
current sign-in path working until the new one is proven.
- **No visibility change** in this plan. Repositories, packages and
`REQUIRE_SIGNIN_VIEW` are ORGREF-WP-0002-T08.
- **Configuration in git.** The authentication source is declared in
`helm/forgejo-values.yaml` (`gitea.oauth`), with its secret drawn from an
ExternalSecret over OpenBao. No click-ops, and no secret value in git.
- Open registration is already disabled (`service.DISABLE_REGISTRATION: true`).
This plan keeps it that way.
## Tasks
```task
id: RAPPS-WP-0016-T01
status: done
priority: high
state_hub_task_id: "98004ed0-83e6-5f6e-9b18-15b8b2aec2e7"
```
### T01 — Make the local administrator a sealed break-glass
Before anything about sign-in changes: confirm the local administrator account
works, keep its credential only in OpenBao, and document recovery (who, how,
where it is logged) in `docs/forgejo-on-railiance01.md`. Verify one break-glass
sign-in and record it without the credential.
Acceptance: a recorded break-glass sign-in, with the recovery path written down.
This is the "never lock ourselves out" floor for every later step.
Done 2026-10-17: founder sealed `forgejo_admin` into OpenBao
`platform/workloads/forgejo/break-glass-admin` (version 1) and verified a local
sign-in (HTTP 200, site admin): `docs/evidence/2026-10-17-forgejo-breakglass-signin.json`.
Recovery path: `docs/forgejo-on-railiance01.md` § Break-glass administrator.
```task
id: RAPPS-WP-0016-T02
status: wait
depends_on: [RAPPS-WP-0016-T01, KEY-WP-0038-T02]
blocking_reason: "Break-glass done (T01); needs the NetKingdom client registered with its secret in custody (KEY-WP-0038-T02)."
priority: high
state_hub_task_id: "13cd3aec-c87d-5d3f-a421-39d8ff131edd"
```
### T02 — Add the NetKingdom authentication source
- an ExternalSecret delivering the `forgejo` client secret from OpenBao to a
Secret in the `forgejo` namespace. Custody path is
`platform/workloads/keycape/forgejo`, field `CLIENT_SECRET`, read by ESO through
Kubernetes-auth role `external-secrets-keycape-forgejo-forgejo`, which carries
only policy `workload-kv-read-keycape-forgejo-forgejo` (net-kingdom 074b3a0;
replaces the earlier `platform/workloads/forgejo/netkingdom-oidc-client` proposal). The
SA/SecretStore/ExternalSecret shape follows the NK-WP-0048
`deliver-consumer-secret` receipt contract
(`docs/evidence/nk48-t16-owner-review/owner-review-railiance-apps.json`)
- `gitea.oauth`: name `netkingdom` (must match the redirect URI registered in
key-cape), provider `openidConnect`, auto-discovery from
`https://kc.coulomb.social/.well-known/openid-configuration`, scopes
`openid profile email groups`, group-claim name `groups`
- `oauth2_client` settings: no automatic account creation for unknown subjects;
account linking to existing local accounts by username after a successful
local sign-in (so the founder and agent accounts keep their history)
- Helm upgrade with the previous revision noted for rollback
Local password sign-in stays enabled.
Acceptance: the "Sign in with netkingdom" option appears. Local sign-in still
works. Rollback is one `helm rollback` to the noted revision.
```task
id: RAPPS-WP-0016-T03
status: wait
depends_on: [RAPPS-WP-0016-T02]
blocking_reason: "Linking and team mapping follow a working authentication source."
priority: high
state_hub_task_id: "81f072aa-c316-511e-a2cd-21dd1b1d0a00"
```
### T03 — Link accounts and map groups to teams
- The founder links their account through NetKingdom (MFA), then signs in again
through NetKingdom only and sees the same repositories, organisations and
admin rights.
- Map NetKingdom groups (names agreed in KEY-WP-0038-T01) to organisation teams:
owners and readers at least. Create the read-only teams that
ORGREF-WP-0002-T06 consumers will use.
- Apply KEY-WP-0038-T03's decision on agents and services: NetKingdom sign-in, or
scoped tokens bound to service identities.
Acceptance: founder and one agent work through NetKingdom; group-to-team mapping
verified by adding and removing one test membership; break-glass still works.
```task
id: RAPPS-WP-0016-T04
status: wait
depends_on: [RAPPS-WP-0016-T03]
needs_human: true
blocking_reason: "Restricting local password sign-in is a founder decision once NetKingdom sign-in is proven."
priority: medium
state_hub_task_id: "32c54737-c40f-5fde-9b91-163f8dcb0068"
```
### T04 — Decide on local password sign-in
Once NetKingdom sign-in has been used for a while without problems, the founder
decides whether local password sign-in is turned off for everyone except
break-glass. This is not required to close the forge; it is the next tightening
step, taken separately.
```task
id: RAPPS-WP-0016-T05
status: wait
depends_on: [RAPPS-WP-0016-T02]
blocking_reason: "Waits for net-kingdom's answer to the Apps 1.3 needs-change record (the-custodian docs/changes/netkingdom-target-2026-10-17/nk48-1.3-owner-review/owner-review-railiance-apps.json: RAPPS-1.3-C1..C3) and the re-frozen 1.3 candidate."
priority: medium
state_hub_task_id: "728786c9-f1f9-5983-a6a4-dea21faf67f5"
```
### T05 — Apps owner seams for NK-WP-0048 consumer steps
Implement the real Apps capabilities behind the `deliver-consumer-secret` and
`hand-over` adapters, as owner-run paths (option C): `owner_apply` /
`owner_remove` emitting `netkingdom.consumer-secret-delivery.v1` receipts from the
T02 objects; a consumer verifier that observes Forgejo sign-in and the T03
positive/negative group probes; and a committed-evidence hand-over receipt store.
See the owner-review record for the contract.
Acceptance: receipts produced from the live T02/T03 run validate against the
adapters' checks with no value-bearing keys.
## Also in scope: stale node credential
The k3s `registries.yaml` on railiance01 still holds a login for the frozen Gitea
host `92.205.130.254` (ORGREF-WP-0002-T02). Coordinate its removal with the node
owner when ORGREF-WP-0002-T06 adds the forge registry login, in the same change.
## T06 — Package the reviewed consumer source through the Apps build path
```task
id: RAPPS-WP-0016-T06
status: done
priority: high
state_hub_task_id: "08ab8921-7801-5309-b84b-bc2a3ceea1e4"
```
Completed 2026-10-18, source build tooling only. The existing Apps Makefile now
has explicit prepare, public-dependency acquisition, offline build, artifact
verification and local OCI export targets for the pinned official Forgejo11.0.3
source plus reviewed multi-value claim patch. Source/toolchains/locks/compiler
inputs/base image are fixed. Third-party application source stays in a new /tmp
workspace; Apps holds the release input lock, patch and build recipe.
The original build profile produced identical frontend assets, bindata sources
and complete static executable in two workspaces, and identical local OCI
archives in two no-cache exports. Independent review then found host process
argv visibility through /proc (APPSBUILD-R1-F01). The revised recipe adds a
private PID namespace; exact source and synthetic canary regression are separately
reviewed. The original full builds are historical r1-profile evidence; no full
r2 build is claimed. Original packet/review and failure history remain in
Custodian apps-forgejo-release-build-r1 and apps-release-independent-review-r1;
the correction is apps-forgejo-release-build-r2. This is coordinator source
integration after independent technical review, not formal owner assent or image
admission. Helm values, deployed image, local sign-in and visibility are unchanged.
NK-WP-0048-T39 remains progress for the full release acceptance scope.
## T07 — Keep the client secret out of process arguments
```task
id: RAPPS-WP-0016-T07
status: progress
priority: high
state_hub_task_id: "786d6584-6db1-5a10-9324-d7b94db0df94"
```
Implement and independently review a real Forgejo add/update --secret-file path
and the actual chart helper/mount adaptation. Preserve the existing CLIENT_SECRET
key and custody route; use no agent-value argument or environment fallback. Test
bounded stable nofollow file reads, exact existing minted-secret encoding,
mutual exclusion/update preservation, fixed errors and actual Helm rendering.
Private mount identity/reader set and new package/type revisions need explicit
owner/runtime admission. The in-progress isolated candidate is Custodian
forgejo-private-input-r1; source completion is distinct from T02 native delivery.
## T08 — Provide a transactional application-source inverse and durable recovery
```task
id: RAPPS-WP-0016-T08
status: progress
priority: high
state_hub_task_id: "4ab8a5e7-ab32-5ee2-aaf2-6da246d1b0c8"
```
Implement actual owner database primitives that record operation intent/outcome
in the same durable database, compare complete raw persisted before/post/current
source state privately, and serialize conflicting application writers at the DB
boundary. Never emit stored credential/config bytes or delete/detach linked users
or a preexisting/shared source. SQLite and PostgreSQL transaction semantics must
be tested against the real app packages; unsupported backends refuse.
T05 and NK-WP-0048-T34 additionally require actual authenticated execution and
fresh inverse sessions, admitted evidence/recovery and exclusion of every release
writer, including Helm/runtime writers. The candidate DB primitive alone does
not establish those facilities. Helm rollback/omission does not remove persisted
OAuth sources: verify the exact app-state inverse before any image downgrade.
If links prevent removal, retain the extended image and reconcile. The earlier
T02 single-Helm-rollback statement is not sufficient recovery for this extension;
its historical text is retained and corrected here.
2026-10-18 PostgreSQL/source-context continuation for T08: actual Forgejo model
schemas, OAuth configuration types and production DB initialization run on a
disposable PostgreSQL 16.14 instance. All 37 test/subtest results pass across
default, explicit-public and named schemas. Separate client processes prove
rollback after process death immediately following INSERT, committed apply
survival through a real server restart, and subsequent reconciliation/inverse.
Exact raw restoration, private drift, linked-user/external-link refusal, trigger
rollback, table-writer exclusion and concurrent preparation are covered.
Controlled copies with the table lock or private-query context removed fail the
corresponding tests in all three schema profiles. All owned fixture containers
and volumes were removed; no deployed database or real credential was used.
The diagnostics check exposed a real tracing-hook composition panic. The new
40-path build candidate publishes the task context into XORM's shared query
context so subsequent hooks preserve it. Actual private/ordinary SQLite traces
and PostgreSQL driver-error hooks cover the correction. Six focused SQLite DB
checks and all 94 selected composed package results pass without skips. The
previous panic, fixture/compilation failures and refinement history remain in
Custodian forgejo-postgres-source-r1. Complete release evidence uses the new
feb10793 patch; the prior frozen artifact is historical.
This proves bounded source/database mechanics. T08 remains progress for current
authenticated initiating/inverse sessions, release-wide writer exclusion, private
evidence/custody/retention and native deployed-database acceptance. Independent
owner review and exact package/type/runtime admission remain open. T07/T09 and
all original task UUIDs and statuses are preserved.
## T09 — Enforce authenticated Access Engine decisions in the application path
```task
id: RAPPS-WP-0016-T09
status: progress
priority: high
state_hub_task_id: "d3804638-c73d-5b9f-a456-4262f62f9e6b"
```
Use the producer-owned decision format/canonical bytes and independently admitted
signer/policy/request pins. Forgejo must verify the caller's issuer/tenant and
assurance facts, obtain and authenticate the exact Access Engine resource/action
decision, and refuse missing, stale, wrong-pin, unavailable or malformed replies.
Keep the original three-group any-of access set as policy input; its local
compatibility gate is not a substitute PDP or an architecture exception. An
issuer allowed/denied claim cannot manufacture authorization. Source integration
needs real provider/callback/session wiring and meaningful producer-consumer
positive/adverse tests before re-freezing the case and package. Existing break-
glass/local account and linking behavior remain within the declared owner scope.
2026-10-18 source continuation for T07/T08/T09: the digest-bound build
candidate now composes all 37 paths, including private secret-file input, actual
source-state transactions/private SQL hooks, the producer-owned Access Engine
Check client from ca0cb757 and guarded OIDC callback enforcement. The parser uses
the actual KeyCape typed assurance/authentication-time/provenance contract; its
actual issuer fixture/callback suite passes 71 test/subtest results, and selected
composed packages pass 93 with no skips. The previous incompatible-string-claim
rejection is retained. All patch postimages independently replay from the pinned
official archive. Complete release build/verification is tracked in Custodian
forgejo-keycape-claims-r1; earlier release outputs do not prove this revision.
This is coordinator source integration of a tested build candidate; independent
owner review and formal operational admission remain open. T07's chart/private
mount admission, T08's fresh authenticated operation/inverse and release-wide
writer exclusion, T09's ongoing HTTP/API/Git/SSH paths, private evidence/retention,
PostgreSQL/native proof and actual issuer/factor/custody acceptance remain open.
No trust, deployed image, Helm values, source DB, user/link state or local sign-in
is changed by this build-source update. The preserved legacy patch is historical;
the input lock now explicitly selects forgejo-security-extension.patch.

View file

@ -0,0 +1,163 @@
{
"action": "build",
"returncode": 0,
"expected_returncode": 0,
"outcome_matches": true,
"seconds": 13.81,
"argv": [
"bwrap",
"--unshare-pid",
"--die-with-parent",
"--new-session",
"--unshare-net",
"--ro-bind",
"/usr",
"/usr",
"--ro-bind",
"/lib",
"/lib",
"--ro-bind",
"/lib64",
"/lib64",
"--symlink",
"usr/bin",
"/bin",
"--proc",
"/proc",
"--dev",
"/dev",
"--tmpfs",
"/tmp",
"--bind",
"/tmp/custodian-forgejo-successor-r3",
"/work",
"--ro-bind",
"/home/worsch/go/pkg/mod/cache/download",
"/cached",
"--ro-bind",
"/etc/ssl/certs",
"/etc/ssl/certs",
"--ro-bind",
"/etc/resolv.conf",
"/etc/resolv.conf",
"--chdir",
"/work/source",
"--clearenv",
"--ro-bind",
"/tmp/custodian-forgejo-successor-attempt2/modules",
"/work/modules",
"--bind",
"/tmp/custodian-forgejo-successor-attempt2/gocache",
"/work/gocache",
"--dir",
"/run",
"--ro-bind",
"/tmp/custodian-forgejo-successor-r3/descriptor-fixtures",
"/run/forgejo-oidc",
"--bind",
"/tmp/custodian-forgejo-successor-r3/descriptor-fixtures",
"/run/writable-input",
"--setenv",
"PATH",
"/work/go/bin:/usr/bin:/bin",
"--setenv",
"HOME",
"/work/home",
"--setenv",
"GOPATH",
"/work/gopath",
"--setenv",
"GOTOOLCHAIN",
"local",
"--setenv",
"GOPROXY",
"off",
"--setenv",
"GOSUMDB",
"off",
"--setenv",
"GOVCS",
"*:off",
"--setenv",
"GOMODCACHE",
"/work/modules",
"--setenv",
"GOCACHE",
"/work/gocache",
"--setenv",
"GOMAXPROCS",
"4",
"--setenv",
"CGO_ENABLED",
"1",
"--setenv",
"GIT_CONFIG_NOSYSTEM",
"1",
"--setenv",
"GIT_CONFIG_GLOBAL",
"/work/home/test.gitconfig",
"--setenv",
"GIT_TERMINAL_PROMPT",
"0",
"--ro-bind",
"/tmp/custodian-forgejo-postgres-tests-r1/auth",
"/work/source/models/auth",
"--bind",
"/tmp/custodian-forgejo-postgres-tests-r1",
"/pg-work",
"--dir",
"/run",
"--ro-bind",
"/tmp/custodian-forgejo-postgres-r1-attempt3/socket",
"/run/source-operation-postgres",
"--setenv",
"CUSTODIAN_PG_SOCKET",
"/run/source-operation-postgres",
"--",
"go",
"test",
"-c",
"-p",
"4",
"-tags",
"sqlite sqlite_unlock_notify source_operation_postgres",
"-o",
"/pg-work/models-auth.test",
"./models/auth"
],
"workspace": "/tmp/custodian-forgejo-postgres-tests-r1",
"source_pins": {
"access_token.go": "sha256:c3131e03c24356fb09fdd600efd17d8054063534355a4c5a3b769f840a58c8ac",
"access_token_scope.go": "sha256:36173156237cc3c3231da78fc9c7e503391ea29c29496721bf4f6b197ab128d3",
"access_token_scope_test.go": "sha256:738bff8f60339a3b4cbd21c31f52812eacde1435fcf55ea657c2a950c262de7d",
"access_token_test.go": "sha256:0121b13b075e6dadb5f6bf5899ceb815786d386cd75214566545b1a3cbe5e721",
"auth_token.go": "sha256:e652217daeffab3c9918efaab56ba4a0a0e8024071840cd8bb85925fe2568bd9",
"main_test.go": "sha256:1c78be2861df2215936939b085bc2bac431f607731fe68da85cfc9c95a4eac87",
"oauth2.go": "sha256:626c075138a8e1dd22d4814b11c6d6acd04e8aae2443e47017de9a289b8f55ac",
"oauth2_list.go": "sha256:2665b0833370d4cb9d0a30e43bd86625f4f707e26a8e5bef53559816aafb7e91",
"oauth2_test.go": "sha256:66e671311715001e2c8119daa944667b9744b4a701732007c6f4510d1daf40ca",
"session.go": "sha256:25d934eb96d2b540a51b7337650b58123ad4ee7e1c61547e7efc1c36eb12c26d",
"session_test.go": "sha256:cae8e667a88143cf7ce3238e8adc9e87fd7f0bdf1b2c0d9b1736c2de38485659",
"source.go": "sha256:33ec2f66652bcb442cd80c36db0a2ad7305e1ee9c9c610d054720eea8ab18e4c",
"source_operation.go": "sha256:ef1b07ef6cf454015d00cde8588835f5118d829da91eb0303d37184859345a31",
"source_operation_internal_test.go": "sha256:af0f424d3a1fd2b29793b64baa1fa07284fee7ea0b7721c503db4efac0d871cb",
"source_operation_postgres_export_test.go": "sha256:b9d1553144766b15c408295b87506106935abf4ed61460598b58dc81825e808d",
"source_operation_postgres_test.go": "sha256:852bf5cd2d2a8504d3b82723e09f296436e546fefcf6e5c2280e76f2ef1a7f17",
"source_operation_process_test.go": "sha256:40d33b11a01cb659f0bf6f8b545c4d79910e8c082a789060bcbc9cadeee965bd",
"source_operation_test.go": "sha256:77d311bca42f48faf3fbdc15c53582e3d8a6d9108a72ed7bb6172e5b88951428",
"source_test.go": "sha256:1ad3f9b198155193fd8193f50084889cc949192abf64c060a5ce3043f2ccb212",
"two_factor.go": "sha256:d3a6e0b348b225d0fc012fdd5a6275736a1b324ec4cd1c013ae80a12531e0b8e",
"two_factor_test.go": "sha256:6a88cb12d204a3b3de49d584d589b1c5a97bfb795160ae93b87707f64bece4fe",
"twofactor.go": "sha256:905e1679be552346758b34c8ee7c950628d965d8bd3946b9b63c6797f41625d6",
"webauthn.go": "sha256:0f9adac61a225854d579ed71338303a30a5abf26e4c115a0afefaa4fd199200e",
"webauthn_test.go": "sha256:03f3487f7c05566e71399ff548a95400a66ed7afc96bbf31365aa7abb79dfa69"
},
"original_composite_patch": "sha256:15cb7f13b1b1d1095cc344176ca337f705333a436a70ae803fcfd3d7f802ccf4",
"runtime": "custodian-forgejo-pg-96ce905f445a",
"image_id": "sha256:57c72fd2a128e416c7fcc499958864df5301e940bca0a56f58fddf30ffc07777",
"network": "disabled; only the exact disposable database Unix socket is bound",
"production_database": false,
"actual_authenticated_operation": false,
"real_credentials": false,
"test_binary_sha256": "sha256:a58899fab4b0355a6d9436ab726b1aeada01a2987856b3490a15cf3d33984a88"
}

View file

@ -0,0 +1,163 @@
{
"action": "build",
"returncode": 0,
"expected_returncode": 0,
"outcome_matches": true,
"seconds": 5.88,
"argv": [
"bwrap",
"--unshare-pid",
"--die-with-parent",
"--new-session",
"--unshare-net",
"--ro-bind",
"/usr",
"/usr",
"--ro-bind",
"/lib",
"/lib",
"--ro-bind",
"/lib64",
"/lib64",
"--symlink",
"usr/bin",
"/bin",
"--proc",
"/proc",
"--dev",
"/dev",
"--tmpfs",
"/tmp",
"--bind",
"/tmp/custodian-forgejo-successor-r3",
"/work",
"--ro-bind",
"/home/worsch/go/pkg/mod/cache/download",
"/cached",
"--ro-bind",
"/etc/ssl/certs",
"/etc/ssl/certs",
"--ro-bind",
"/etc/resolv.conf",
"/etc/resolv.conf",
"--chdir",
"/work/source",
"--clearenv",
"--ro-bind",
"/tmp/custodian-forgejo-successor-attempt2/modules",
"/work/modules",
"--bind",
"/tmp/custodian-forgejo-successor-attempt2/gocache",
"/work/gocache",
"--dir",
"/run",
"--ro-bind",
"/tmp/custodian-forgejo-successor-r3/descriptor-fixtures",
"/run/forgejo-oidc",
"--bind",
"/tmp/custodian-forgejo-successor-r3/descriptor-fixtures",
"/run/writable-input",
"--setenv",
"PATH",
"/work/go/bin:/usr/bin:/bin",
"--setenv",
"HOME",
"/work/home",
"--setenv",
"GOPATH",
"/work/gopath",
"--setenv",
"GOTOOLCHAIN",
"local",
"--setenv",
"GOPROXY",
"off",
"--setenv",
"GOSUMDB",
"off",
"--setenv",
"GOVCS",
"*:off",
"--setenv",
"GOMODCACHE",
"/work/modules",
"--setenv",
"GOCACHE",
"/work/gocache",
"--setenv",
"GOMAXPROCS",
"4",
"--setenv",
"CGO_ENABLED",
"1",
"--setenv",
"GIT_CONFIG_NOSYSTEM",
"1",
"--setenv",
"GIT_CONFIG_GLOBAL",
"/work/home/test.gitconfig",
"--setenv",
"GIT_TERMINAL_PROMPT",
"0",
"--ro-bind",
"/tmp/custodian-forgejo-postgres-tests-r1-attempt2/auth",
"/work/source/models/auth",
"--bind",
"/tmp/custodian-forgejo-postgres-tests-r1-attempt2",
"/pg-work",
"--dir",
"/run",
"--ro-bind",
"/tmp/custodian-forgejo-postgres-r1-attempt3/socket",
"/run/source-operation-postgres",
"--setenv",
"CUSTODIAN_PG_SOCKET",
"/run/source-operation-postgres",
"--",
"go",
"test",
"-c",
"-p",
"4",
"-tags",
"sqlite sqlite_unlock_notify source_operation_postgres",
"-o",
"/pg-work/models-auth.test",
"./models/auth"
],
"workspace": "/tmp/custodian-forgejo-postgres-tests-r1-attempt2",
"source_pins": {
"access_token.go": "sha256:c3131e03c24356fb09fdd600efd17d8054063534355a4c5a3b769f840a58c8ac",
"access_token_scope.go": "sha256:36173156237cc3c3231da78fc9c7e503391ea29c29496721bf4f6b197ab128d3",
"access_token_scope_test.go": "sha256:738bff8f60339a3b4cbd21c31f52812eacde1435fcf55ea657c2a950c262de7d",
"access_token_test.go": "sha256:0121b13b075e6dadb5f6bf5899ceb815786d386cd75214566545b1a3cbe5e721",
"auth_token.go": "sha256:e652217daeffab3c9918efaab56ba4a0a0e8024071840cd8bb85925fe2568bd9",
"main_test.go": "sha256:1c78be2861df2215936939b085bc2bac431f607731fe68da85cfc9c95a4eac87",
"oauth2.go": "sha256:626c075138a8e1dd22d4814b11c6d6acd04e8aae2443e47017de9a289b8f55ac",
"oauth2_list.go": "sha256:2665b0833370d4cb9d0a30e43bd86625f4f707e26a8e5bef53559816aafb7e91",
"oauth2_test.go": "sha256:66e671311715001e2c8119daa944667b9744b4a701732007c6f4510d1daf40ca",
"session.go": "sha256:25d934eb96d2b540a51b7337650b58123ad4ee7e1c61547e7efc1c36eb12c26d",
"session_test.go": "sha256:cae8e667a88143cf7ce3238e8adc9e87fd7f0bdf1b2c0d9b1736c2de38485659",
"source.go": "sha256:33ec2f66652bcb442cd80c36db0a2ad7305e1ee9c9c610d054720eea8ab18e4c",
"source_operation.go": "sha256:ef1b07ef6cf454015d00cde8588835f5118d829da91eb0303d37184859345a31",
"source_operation_internal_test.go": "sha256:af0f424d3a1fd2b29793b64baa1fa07284fee7ea0b7721c503db4efac0d871cb",
"source_operation_postgres_export_test.go": "sha256:b9d1553144766b15c408295b87506106935abf4ed61460598b58dc81825e808d",
"source_operation_postgres_test.go": "sha256:0475dfa7d5e31733321134345ff90a3cd9fd8049db9c2b7d54ef1a71c0d70afd",
"source_operation_process_test.go": "sha256:40d33b11a01cb659f0bf6f8b545c4d79910e8c082a789060bcbc9cadeee965bd",
"source_operation_test.go": "sha256:77d311bca42f48faf3fbdc15c53582e3d8a6d9108a72ed7bb6172e5b88951428",
"source_test.go": "sha256:1ad3f9b198155193fd8193f50084889cc949192abf64c060a5ce3043f2ccb212",
"two_factor.go": "sha256:d3a6e0b348b225d0fc012fdd5a6275736a1b324ec4cd1c013ae80a12531e0b8e",
"two_factor_test.go": "sha256:6a88cb12d204a3b3de49d584d589b1c5a97bfb795160ae93b87707f64bece4fe",
"twofactor.go": "sha256:905e1679be552346758b34c8ee7c950628d965d8bd3946b9b63c6797f41625d6",
"webauthn.go": "sha256:0f9adac61a225854d579ed71338303a30a5abf26e4c115a0afefaa4fd199200e",
"webauthn_test.go": "sha256:03f3487f7c05566e71399ff548a95400a66ed7afc96bbf31365aa7abb79dfa69"
},
"original_composite_patch": "sha256:15cb7f13b1b1d1095cc344176ca337f705333a436a70ae803fcfd3d7f802ccf4",
"runtime": "custodian-forgejo-pg-96ce905f445a",
"image_id": "sha256:57c72fd2a128e416c7fcc499958864df5301e940bca0a56f58fddf30ffc07777",
"network": "disabled; only the exact disposable database Unix socket is bound",
"production_database": false,
"actual_authenticated_operation": false,
"real_credentials": false,
"test_binary_sha256": "sha256:9eadebf02dabd91ed50ddd590b62bda1ee4a89cd824069495603ad62b7d144ec"
}

View file

@ -0,0 +1,163 @@
{
"action": "build",
"returncode": 0,
"expected_returncode": 0,
"outcome_matches": true,
"seconds": 6.08,
"argv": [
"bwrap",
"--unshare-pid",
"--die-with-parent",
"--new-session",
"--unshare-net",
"--ro-bind",
"/usr",
"/usr",
"--ro-bind",
"/lib",
"/lib",
"--ro-bind",
"/lib64",
"/lib64",
"--symlink",
"usr/bin",
"/bin",
"--proc",
"/proc",
"--dev",
"/dev",
"--tmpfs",
"/tmp",
"--bind",
"/tmp/custodian-forgejo-successor-r3",
"/work",
"--ro-bind",
"/home/worsch/go/pkg/mod/cache/download",
"/cached",
"--ro-bind",
"/etc/ssl/certs",
"/etc/ssl/certs",
"--ro-bind",
"/etc/resolv.conf",
"/etc/resolv.conf",
"--chdir",
"/work/source",
"--clearenv",
"--ro-bind",
"/tmp/custodian-forgejo-successor-attempt2/modules",
"/work/modules",
"--bind",
"/tmp/custodian-forgejo-successor-attempt2/gocache",
"/work/gocache",
"--dir",
"/run",
"--ro-bind",
"/tmp/custodian-forgejo-successor-r3/descriptor-fixtures",
"/run/forgejo-oidc",
"--bind",
"/tmp/custodian-forgejo-successor-r3/descriptor-fixtures",
"/run/writable-input",
"--setenv",
"PATH",
"/work/go/bin:/usr/bin:/bin",
"--setenv",
"HOME",
"/work/home",
"--setenv",
"GOPATH",
"/work/gopath",
"--setenv",
"GOTOOLCHAIN",
"local",
"--setenv",
"GOPROXY",
"off",
"--setenv",
"GOSUMDB",
"off",
"--setenv",
"GOVCS",
"*:off",
"--setenv",
"GOMODCACHE",
"/work/modules",
"--setenv",
"GOCACHE",
"/work/gocache",
"--setenv",
"GOMAXPROCS",
"4",
"--setenv",
"CGO_ENABLED",
"1",
"--setenv",
"GIT_CONFIG_NOSYSTEM",
"1",
"--setenv",
"GIT_CONFIG_GLOBAL",
"/work/home/test.gitconfig",
"--setenv",
"GIT_TERMINAL_PROMPT",
"0",
"--ro-bind",
"/tmp/custodian-forgejo-postgres-tests-r1-attempt3/auth",
"/work/source/models/auth",
"--bind",
"/tmp/custodian-forgejo-postgres-tests-r1-attempt3",
"/pg-work",
"--dir",
"/run",
"--ro-bind",
"/tmp/custodian-forgejo-postgres-r1-attempt3/socket",
"/run/source-operation-postgres",
"--setenv",
"CUSTODIAN_PG_SOCKET",
"/run/source-operation-postgres",
"--",
"go",
"test",
"-c",
"-p",
"4",
"-tags",
"sqlite sqlite_unlock_notify source_operation_postgres",
"-o",
"/pg-work/models-auth.test",
"./models/auth"
],
"workspace": "/tmp/custodian-forgejo-postgres-tests-r1-attempt3",
"source_pins": {
"access_token.go": "sha256:c3131e03c24356fb09fdd600efd17d8054063534355a4c5a3b769f840a58c8ac",
"access_token_scope.go": "sha256:36173156237cc3c3231da78fc9c7e503391ea29c29496721bf4f6b197ab128d3",
"access_token_scope_test.go": "sha256:738bff8f60339a3b4cbd21c31f52812eacde1435fcf55ea657c2a950c262de7d",
"access_token_test.go": "sha256:0121b13b075e6dadb5f6bf5899ceb815786d386cd75214566545b1a3cbe5e721",
"auth_token.go": "sha256:e652217daeffab3c9918efaab56ba4a0a0e8024071840cd8bb85925fe2568bd9",
"main_test.go": "sha256:1c78be2861df2215936939b085bc2bac431f607731fe68da85cfc9c95a4eac87",
"oauth2.go": "sha256:626c075138a8e1dd22d4814b11c6d6acd04e8aae2443e47017de9a289b8f55ac",
"oauth2_list.go": "sha256:2665b0833370d4cb9d0a30e43bd86625f4f707e26a8e5bef53559816aafb7e91",
"oauth2_test.go": "sha256:66e671311715001e2c8119daa944667b9744b4a701732007c6f4510d1daf40ca",
"session.go": "sha256:25d934eb96d2b540a51b7337650b58123ad4ee7e1c61547e7efc1c36eb12c26d",
"session_test.go": "sha256:cae8e667a88143cf7ce3238e8adc9e87fd7f0bdf1b2c0d9b1736c2de38485659",
"source.go": "sha256:33ec2f66652bcb442cd80c36db0a2ad7305e1ee9c9c610d054720eea8ab18e4c",
"source_operation.go": "sha256:ef1b07ef6cf454015d00cde8588835f5118d829da91eb0303d37184859345a31",
"source_operation_internal_test.go": "sha256:af0f424d3a1fd2b29793b64baa1fa07284fee7ea0b7721c503db4efac0d871cb",
"source_operation_postgres_export_test.go": "sha256:b9d1553144766b15c408295b87506106935abf4ed61460598b58dc81825e808d",
"source_operation_postgres_test.go": "sha256:4a37504e5af00580d114ef1bed5cb32e09e4ec2de5fd3192adef043a4ea5f7fe",
"source_operation_process_test.go": "sha256:40d33b11a01cb659f0bf6f8b545c4d79910e8c082a789060bcbc9cadeee965bd",
"source_operation_test.go": "sha256:77d311bca42f48faf3fbdc15c53582e3d8a6d9108a72ed7bb6172e5b88951428",
"source_test.go": "sha256:1ad3f9b198155193fd8193f50084889cc949192abf64c060a5ce3043f2ccb212",
"two_factor.go": "sha256:d3a6e0b348b225d0fc012fdd5a6275736a1b324ec4cd1c013ae80a12531e0b8e",
"two_factor_test.go": "sha256:6a88cb12d204a3b3de49d584d589b1c5a97bfb795160ae93b87707f64bece4fe",
"twofactor.go": "sha256:905e1679be552346758b34c8ee7c950628d965d8bd3946b9b63c6797f41625d6",
"webauthn.go": "sha256:0f9adac61a225854d579ed71338303a30a5abf26e4c115a0afefaa4fd199200e",
"webauthn_test.go": "sha256:03f3487f7c05566e71399ff548a95400a66ed7afc96bbf31365aa7abb79dfa69"
},
"original_composite_patch": "sha256:15cb7f13b1b1d1095cc344176ca337f705333a436a70ae803fcfd3d7f802ccf4",
"runtime": "custodian-forgejo-pg-96ce905f445a",
"image_id": "sha256:57c72fd2a128e416c7fcc499958864df5301e940bca0a56f58fddf30ffc07777",
"network": "disabled; only the exact disposable database Unix socket is bound",
"production_database": false,
"actual_authenticated_operation": false,
"real_credentials": false,
"test_binary_sha256": "sha256:b1da12376c4ee8f30e5b8302236fc77b30dd0b39b6c1c570134508bce15f55d8"
}

View file

@ -0,0 +1,197 @@
{
"action": "build",
"returncode": 0,
"expected_returncode": 0,
"outcome_matches": true,
"seconds": 12.52,
"argv": [
"bwrap",
"--unshare-pid",
"--die-with-parent",
"--new-session",
"--unshare-net",
"--ro-bind",
"/usr",
"/usr",
"--ro-bind",
"/lib",
"/lib",
"--ro-bind",
"/lib64",
"/lib64",
"--symlink",
"usr/bin",
"/bin",
"--proc",
"/proc",
"--dev",
"/dev",
"--tmpfs",
"/tmp",
"--bind",
"/tmp/custodian-forgejo-successor-r3",
"/work",
"--ro-bind",
"/home/worsch/go/pkg/mod/cache/download",
"/cached",
"--ro-bind",
"/etc/ssl/certs",
"/etc/ssl/certs",
"--ro-bind",
"/etc/resolv.conf",
"/etc/resolv.conf",
"--chdir",
"/work/source",
"--clearenv",
"--ro-bind",
"/tmp/custodian-forgejo-successor-attempt2/modules",
"/work/modules",
"--bind",
"/tmp/custodian-forgejo-successor-attempt2/gocache",
"/work/gocache",
"--dir",
"/run",
"--ro-bind",
"/tmp/custodian-forgejo-successor-r3/descriptor-fixtures",
"/run/forgejo-oidc",
"--bind",
"/tmp/custodian-forgejo-successor-r3/descriptor-fixtures",
"/run/writable-input",
"--setenv",
"PATH",
"/work/go/bin:/usr/bin:/bin",
"--setenv",
"HOME",
"/work/home",
"--setenv",
"GOPATH",
"/work/gopath",
"--setenv",
"GOTOOLCHAIN",
"local",
"--setenv",
"GOPROXY",
"off",
"--setenv",
"GOSUMDB",
"off",
"--setenv",
"GOVCS",
"*:off",
"--setenv",
"GOMODCACHE",
"/work/modules",
"--setenv",
"GOCACHE",
"/work/gocache",
"--setenv",
"GOMAXPROCS",
"4",
"--setenv",
"CGO_ENABLED",
"1",
"--setenv",
"GIT_CONFIG_NOSYSTEM",
"1",
"--setenv",
"GIT_CONFIG_GLOBAL",
"/work/home/test.gitconfig",
"--setenv",
"GIT_TERMINAL_PROMPT",
"0",
"--ro-bind",
"/tmp/custodian-forgejo-postgres-tests-r1-attempt4/auth",
"/work/source/models/auth",
"--bind",
"/tmp/custodian-forgejo-postgres-tests-r1-attempt4",
"/pg-work",
"--dir",
"/run",
"--ro-bind",
"/tmp/custodian-forgejo-postgres-r1-attempt3/socket",
"/run/source-operation-postgres",
"--setenv",
"CUSTODIAN_PG_SOCKET",
"/run/source-operation-postgres",
"--ro-bind",
"/tmp/custodian-forgejo-postgres-tests-r1-attempt4/db",
"/work/source/models/db",
"--",
"go",
"test",
"-c",
"-p",
"4",
"-tags",
"sqlite sqlite_unlock_notify source_operation_postgres",
"-o",
"/pg-work/models-auth.test",
"./models/auth"
],
"workspace": "/tmp/custodian-forgejo-postgres-tests-r1-attempt4",
"source_pins": {
"access_token.go": "sha256:c3131e03c24356fb09fdd600efd17d8054063534355a4c5a3b769f840a58c8ac",
"access_token_scope.go": "sha256:36173156237cc3c3231da78fc9c7e503391ea29c29496721bf4f6b197ab128d3",
"access_token_scope_test.go": "sha256:738bff8f60339a3b4cbd21c31f52812eacde1435fcf55ea657c2a950c262de7d",
"access_token_test.go": "sha256:0121b13b075e6dadb5f6bf5899ceb815786d386cd75214566545b1a3cbe5e721",
"auth_token.go": "sha256:e652217daeffab3c9918efaab56ba4a0a0e8024071840cd8bb85925fe2568bd9",
"main_test.go": "sha256:1c78be2861df2215936939b085bc2bac431f607731fe68da85cfc9c95a4eac87",
"oauth2.go": "sha256:626c075138a8e1dd22d4814b11c6d6acd04e8aae2443e47017de9a289b8f55ac",
"oauth2_list.go": "sha256:2665b0833370d4cb9d0a30e43bd86625f4f707e26a8e5bef53559816aafb7e91",
"oauth2_test.go": "sha256:66e671311715001e2c8119daa944667b9744b4a701732007c6f4510d1daf40ca",
"session.go": "sha256:25d934eb96d2b540a51b7337650b58123ad4ee7e1c61547e7efc1c36eb12c26d",
"session_test.go": "sha256:cae8e667a88143cf7ce3238e8adc9e87fd7f0bdf1b2c0d9b1736c2de38485659",
"source.go": "sha256:33ec2f66652bcb442cd80c36db0a2ad7305e1ee9c9c610d054720eea8ab18e4c",
"source_operation.go": "sha256:ef1b07ef6cf454015d00cde8588835f5118d829da91eb0303d37184859345a31",
"source_operation_internal_test.go": "sha256:af0f424d3a1fd2b29793b64baa1fa07284fee7ea0b7721c503db4efac0d871cb",
"source_operation_postgres_export_test.go": "sha256:b9d1553144766b15c408295b87506106935abf4ed61460598b58dc81825e808d",
"source_operation_postgres_test.go": "sha256:4a37504e5af00580d114ef1bed5cb32e09e4ec2de5fd3192adef043a4ea5f7fe",
"source_operation_process_test.go": "sha256:40d33b11a01cb659f0bf6f8b545c4d79910e8c082a789060bcbc9cadeee965bd",
"source_operation_test.go": "sha256:77d311bca42f48faf3fbdc15c53582e3d8a6d9108a72ed7bb6172e5b88951428",
"source_test.go": "sha256:1ad3f9b198155193fd8193f50084889cc949192abf64c060a5ce3043f2ccb212",
"two_factor.go": "sha256:d3a6e0b348b225d0fc012fdd5a6275736a1b324ec4cd1c013ae80a12531e0b8e",
"two_factor_test.go": "sha256:6a88cb12d204a3b3de49d584d589b1c5a97bfb795160ae93b87707f64bece4fe",
"twofactor.go": "sha256:905e1679be552346758b34c8ee7c950628d965d8bd3946b9b63c6797f41625d6",
"webauthn.go": "sha256:0f9adac61a225854d579ed71338303a30a5abf26e4c115a0afefaa4fd199200e",
"webauthn_test.go": "sha256:03f3487f7c05566e71399ff548a95400a66ed7afc96bbf31365aa7abb79dfa69"
},
"database_source_pins": {
"collation.go": "sha256:9922312734c5cc2a5474b322b88214586916b320969172708f48c7b6eca40e7d",
"common.go": "sha256:f0c626ebedaedb8681a4f3a3531441c49f3e0d305b20730aa47b267b6e16b3fd",
"consistency.go": "sha256:c771f62de8511bfc307583a4585190aba8b38ca2ac76eab200bc901aa15b7bad",
"context.go": "sha256:d4c4acfcb8987071aecf5cd957b3821c8d2619a2696398d37c2970f2527686f7",
"context_committer_test.go": "sha256:83cf7fbfc32aff358221abadee63e96a803a4136c9851cf696c543dc5176d777",
"context_test.go": "sha256:677f6be23f1c855a154de6078a540b60e17c737becfae6115e55ff6d81c3a937",
"convert.go": "sha256:48e62893b598b767dccbf414c0acffbc26c6cfb6cb22ba79eb5b66dbb6c8193a",
"engine.go": "sha256:d21a5b0b9ca37ac48222b79007467a232abc38edda99b3c5f54f1f4c5ab795e8",
"engine_test.go": "sha256:ec78585da5d8b33deb0b55ba3ffd9d8ff4df704ffd62c2d95c2a6ffddd5bc309",
"error.go": "sha256:ca0ead3529d977f90930974200a0a751366629590dae516cb54245d9c75bb280",
"index.go": "sha256:fdfdaf6da41f317d51665bfc03684074aadf5fb32607d80c15ee9b33fdc89f09",
"index_test.go": "sha256:d46ea9d96fc9b51e477ebecb5cfa0e15fc8e13a00c5c84ce620dd23e73663558",
"iterate.go": "sha256:0512e2f2a3785daec26f434f6b55c37e8cd590c1b49d2068f42160c424757e28",
"iterate_test.go": "sha256:8b9eb9d391bd99bddf6b3da5744bd80088eb4d8446c7f51dd3299abe1b8a5ebe",
"list.go": "sha256:e23e7056f9dbce52d85ca922fa4eadb834a6ee3a5dbcafe82485038332b798e0",
"list_test.go": "sha256:5bc42a869931470daf503b51bd3dbf5cb092d37d8cc4e03f80a21f564beadf6a",
"log.go": "sha256:6f080111c46868e337d4d6dd16c56a5743c13b86b412df219701030cd1718a01",
"main_test.go": "sha256:d9eb5ba4ab294ebb2c865969479d6d73db21669f24cc5454ac42f6dbd8825ef3",
"name.go": "sha256:e486e89a36103f56af54f5f39a9b166ac0b08800abaccc2857ab324777dda6b5",
"search.go": "sha256:b488e9a93f95d28450929896ce648e67f6772e1cd8662f7a0a1a8988a24dbfa2",
"sensitive_sql.go": "sha256:06a298d0d6e628e6920384d4ddeef449e40c090841ebaa3f6d175725a45ae584",
"sensitive_sql_logging_test.go": "sha256:d924b35d30686473caf29601cf51cc363ba68158cb4ef0981c9e2fc7b03c04b7",
"sensitive_sql_test.go": "sha256:de6353c955047c3311747e4777b9f9b2195e9efb19160b971dd758dfc94cf31b",
"sequence.go": "sha256:c0e4c7fbaa93961d9711143cfcf4bbb32f197985d21b77424946fbe3a39b38eb",
"sql_postgres_with_schema.go": "sha256:e5941e859ada7831b400fd3143e58f91b1058cb32779d6a4466af01617cf6e7a",
"tracing_context_test.go": "sha256:53d35e31ae9f318d8f77a323fdc5b18bae804bdc86ccb639f335dfbe59e9b17c"
},
"original_composite_patch": "sha256:15cb7f13b1b1d1095cc344176ca337f705333a436a70ae803fcfd3d7f802ccf4",
"runtime": "custodian-forgejo-pg-96ce905f445a",
"image_id": "sha256:57c72fd2a128e416c7fcc499958864df5301e940bca0a56f58fddf30ffc07777",
"controlled_mutation": {
"mutation": "none"
},
"network": "disabled; only the exact disposable database Unix socket is bound",
"production_database": false,
"actual_authenticated_operation": false,
"real_credentials": false,
"test_binary_sha256": "sha256:ea124dc75fa8c4d4063fdd2df57e506c1cd53e3c4478597e2d51b5c214de7569"
}

View file

@ -0,0 +1,197 @@
{
"action": "build",
"returncode": 0,
"expected_returncode": 0,
"outcome_matches": true,
"seconds": 6.03,
"argv": [
"bwrap",
"--unshare-pid",
"--die-with-parent",
"--new-session",
"--unshare-net",
"--ro-bind",
"/usr",
"/usr",
"--ro-bind",
"/lib",
"/lib",
"--ro-bind",
"/lib64",
"/lib64",
"--symlink",
"usr/bin",
"/bin",
"--proc",
"/proc",
"--dev",
"/dev",
"--tmpfs",
"/tmp",
"--bind",
"/tmp/custodian-forgejo-successor-r3",
"/work",
"--ro-bind",
"/home/worsch/go/pkg/mod/cache/download",
"/cached",
"--ro-bind",
"/etc/ssl/certs",
"/etc/ssl/certs",
"--ro-bind",
"/etc/resolv.conf",
"/etc/resolv.conf",
"--chdir",
"/work/source",
"--clearenv",
"--ro-bind",
"/tmp/custodian-forgejo-successor-attempt2/modules",
"/work/modules",
"--bind",
"/tmp/custodian-forgejo-successor-attempt2/gocache",
"/work/gocache",
"--dir",
"/run",
"--ro-bind",
"/tmp/custodian-forgejo-successor-r3/descriptor-fixtures",
"/run/forgejo-oidc",
"--bind",
"/tmp/custodian-forgejo-successor-r3/descriptor-fixtures",
"/run/writable-input",
"--setenv",
"PATH",
"/work/go/bin:/usr/bin:/bin",
"--setenv",
"HOME",
"/work/home",
"--setenv",
"GOPATH",
"/work/gopath",
"--setenv",
"GOTOOLCHAIN",
"local",
"--setenv",
"GOPROXY",
"off",
"--setenv",
"GOSUMDB",
"off",
"--setenv",
"GOVCS",
"*:off",
"--setenv",
"GOMODCACHE",
"/work/modules",
"--setenv",
"GOCACHE",
"/work/gocache",
"--setenv",
"GOMAXPROCS",
"4",
"--setenv",
"CGO_ENABLED",
"1",
"--setenv",
"GIT_CONFIG_NOSYSTEM",
"1",
"--setenv",
"GIT_CONFIG_GLOBAL",
"/work/home/test.gitconfig",
"--setenv",
"GIT_TERMINAL_PROMPT",
"0",
"--ro-bind",
"/tmp/custodian-forgejo-postgres-tests-r1-attempt5/auth",
"/work/source/models/auth",
"--bind",
"/tmp/custodian-forgejo-postgres-tests-r1-attempt5",
"/pg-work",
"--dir",
"/run",
"--ro-bind",
"/tmp/custodian-forgejo-postgres-r1-attempt3/socket",
"/run/source-operation-postgres",
"--setenv",
"CUSTODIAN_PG_SOCKET",
"/run/source-operation-postgres",
"--ro-bind",
"/tmp/custodian-forgejo-postgres-tests-r1-attempt5/db",
"/work/source/models/db",
"--",
"go",
"test",
"-c",
"-p",
"4",
"-tags",
"sqlite sqlite_unlock_notify source_operation_postgres",
"-o",
"/pg-work/models-auth.test",
"./models/auth"
],
"workspace": "/tmp/custodian-forgejo-postgres-tests-r1-attempt5",
"source_pins": {
"access_token.go": "sha256:c3131e03c24356fb09fdd600efd17d8054063534355a4c5a3b769f840a58c8ac",
"access_token_scope.go": "sha256:36173156237cc3c3231da78fc9c7e503391ea29c29496721bf4f6b197ab128d3",
"access_token_scope_test.go": "sha256:738bff8f60339a3b4cbd21c31f52812eacde1435fcf55ea657c2a950c262de7d",
"access_token_test.go": "sha256:0121b13b075e6dadb5f6bf5899ceb815786d386cd75214566545b1a3cbe5e721",
"auth_token.go": "sha256:e652217daeffab3c9918efaab56ba4a0a0e8024071840cd8bb85925fe2568bd9",
"main_test.go": "sha256:1c78be2861df2215936939b085bc2bac431f607731fe68da85cfc9c95a4eac87",
"oauth2.go": "sha256:626c075138a8e1dd22d4814b11c6d6acd04e8aae2443e47017de9a289b8f55ac",
"oauth2_list.go": "sha256:2665b0833370d4cb9d0a30e43bd86625f4f707e26a8e5bef53559816aafb7e91",
"oauth2_test.go": "sha256:66e671311715001e2c8119daa944667b9744b4a701732007c6f4510d1daf40ca",
"session.go": "sha256:25d934eb96d2b540a51b7337650b58123ad4ee7e1c61547e7efc1c36eb12c26d",
"session_test.go": "sha256:cae8e667a88143cf7ce3238e8adc9e87fd7f0bdf1b2c0d9b1736c2de38485659",
"source.go": "sha256:33ec2f66652bcb442cd80c36db0a2ad7305e1ee9c9c610d054720eea8ab18e4c",
"source_operation.go": "sha256:ef1b07ef6cf454015d00cde8588835f5118d829da91eb0303d37184859345a31",
"source_operation_internal_test.go": "sha256:af0f424d3a1fd2b29793b64baa1fa07284fee7ea0b7721c503db4efac0d871cb",
"source_operation_postgres_export_test.go": "sha256:b9d1553144766b15c408295b87506106935abf4ed61460598b58dc81825e808d",
"source_operation_postgres_test.go": "sha256:4a37504e5af00580d114ef1bed5cb32e09e4ec2de5fd3192adef043a4ea5f7fe",
"source_operation_process_test.go": "sha256:40d33b11a01cb659f0bf6f8b545c4d79910e8c082a789060bcbc9cadeee965bd",
"source_operation_test.go": "sha256:77d311bca42f48faf3fbdc15c53582e3d8a6d9108a72ed7bb6172e5b88951428",
"source_test.go": "sha256:1ad3f9b198155193fd8193f50084889cc949192abf64c060a5ce3043f2ccb212",
"two_factor.go": "sha256:d3a6e0b348b225d0fc012fdd5a6275736a1b324ec4cd1c013ae80a12531e0b8e",
"two_factor_test.go": "sha256:6a88cb12d204a3b3de49d584d589b1c5a97bfb795160ae93b87707f64bece4fe",
"twofactor.go": "sha256:905e1679be552346758b34c8ee7c950628d965d8bd3946b9b63c6797f41625d6",
"webauthn.go": "sha256:0f9adac61a225854d579ed71338303a30a5abf26e4c115a0afefaa4fd199200e",
"webauthn_test.go": "sha256:03f3487f7c05566e71399ff548a95400a66ed7afc96bbf31365aa7abb79dfa69"
},
"database_source_pins": {
"collation.go": "sha256:9922312734c5cc2a5474b322b88214586916b320969172708f48c7b6eca40e7d",
"common.go": "sha256:f0c626ebedaedb8681a4f3a3531441c49f3e0d305b20730aa47b267b6e16b3fd",
"consistency.go": "sha256:c771f62de8511bfc307583a4585190aba8b38ca2ac76eab200bc901aa15b7bad",
"context.go": "sha256:d4c4acfcb8987071aecf5cd957b3821c8d2619a2696398d37c2970f2527686f7",
"context_committer_test.go": "sha256:83cf7fbfc32aff358221abadee63e96a803a4136c9851cf696c543dc5176d777",
"context_test.go": "sha256:677f6be23f1c855a154de6078a540b60e17c737becfae6115e55ff6d81c3a937",
"convert.go": "sha256:48e62893b598b767dccbf414c0acffbc26c6cfb6cb22ba79eb5b66dbb6c8193a",
"engine.go": "sha256:d21a5b0b9ca37ac48222b79007467a232abc38edda99b3c5f54f1f4c5ab795e8",
"engine_test.go": "sha256:ec78585da5d8b33deb0b55ba3ffd9d8ff4df704ffd62c2d95c2a6ffddd5bc309",
"error.go": "sha256:ca0ead3529d977f90930974200a0a751366629590dae516cb54245d9c75bb280",
"index.go": "sha256:fdfdaf6da41f317d51665bfc03684074aadf5fb32607d80c15ee9b33fdc89f09",
"index_test.go": "sha256:d46ea9d96fc9b51e477ebecb5cfa0e15fc8e13a00c5c84ce620dd23e73663558",
"iterate.go": "sha256:0512e2f2a3785daec26f434f6b55c37e8cd590c1b49d2068f42160c424757e28",
"iterate_test.go": "sha256:8b9eb9d391bd99bddf6b3da5744bd80088eb4d8446c7f51dd3299abe1b8a5ebe",
"list.go": "sha256:e23e7056f9dbce52d85ca922fa4eadb834a6ee3a5dbcafe82485038332b798e0",
"list_test.go": "sha256:5bc42a869931470daf503b51bd3dbf5cb092d37d8cc4e03f80a21f564beadf6a",
"log.go": "sha256:6f080111c46868e337d4d6dd16c56a5743c13b86b412df219701030cd1718a01",
"main_test.go": "sha256:d9eb5ba4ab294ebb2c865969479d6d73db21669f24cc5454ac42f6dbd8825ef3",
"name.go": "sha256:e486e89a36103f56af54f5f39a9b166ac0b08800abaccc2857ab324777dda6b5",
"search.go": "sha256:b488e9a93f95d28450929896ce648e67f6772e1cd8662f7a0a1a8988a24dbfa2",
"sensitive_sql.go": "sha256:06a298d0d6e628e6920384d4ddeef449e40c090841ebaa3f6d175725a45ae584",
"sensitive_sql_logging_test.go": "sha256:d924b35d30686473caf29601cf51cc363ba68158cb4ef0981c9e2fc7b03c04b7",
"sensitive_sql_test.go": "sha256:de6353c955047c3311747e4777b9f9b2195e9efb19160b971dd758dfc94cf31b",
"sequence.go": "sha256:c0e4c7fbaa93961d9711143cfcf4bbb32f197985d21b77424946fbe3a39b38eb",
"sql_postgres_with_schema.go": "sha256:e5941e859ada7831b400fd3143e58f91b1058cb32779d6a4466af01617cf6e7a",
"tracing_context_test.go": "sha256:612b60c67a2be7e2da9173b95d5ef5abd7b9e1e377360828e39a622610bba070"
},
"original_composite_patch": "sha256:15cb7f13b1b1d1095cc344176ca337f705333a436a70ae803fcfd3d7f802ccf4",
"runtime": "custodian-forgejo-pg-96ce905f445a",
"image_id": "sha256:57c72fd2a128e416c7fcc499958864df5301e940bca0a56f58fddf30ffc07777",
"controlled_mutation": {
"mutation": "none"
},
"network": "disabled; only the exact disposable database Unix socket is bound",
"production_database": false,
"actual_authenticated_operation": false,
"real_credentials": false,
"test_binary_sha256": "sha256:ea124dc75fa8c4d4063fdd2df57e506c1cd53e3c4478597e2d51b5c214de7569"
}

View file

@ -0,0 +1,200 @@
{
"action": "build",
"returncode": 0,
"expected_returncode": 0,
"outcome_matches": true,
"seconds": 15.24,
"argv": [
"bwrap",
"--unshare-pid",
"--die-with-parent",
"--new-session",
"--unshare-net",
"--ro-bind",
"/usr",
"/usr",
"--ro-bind",
"/lib",
"/lib",
"--ro-bind",
"/lib64",
"/lib64",
"--symlink",
"usr/bin",
"/bin",
"--proc",
"/proc",
"--dev",
"/dev",
"--tmpfs",
"/tmp",
"--bind",
"/tmp/custodian-forgejo-successor-r3",
"/work",
"--ro-bind",
"/home/worsch/go/pkg/mod/cache/download",
"/cached",
"--ro-bind",
"/etc/ssl/certs",
"/etc/ssl/certs",
"--ro-bind",
"/etc/resolv.conf",
"/etc/resolv.conf",
"--chdir",
"/work/source",
"--clearenv",
"--ro-bind",
"/tmp/custodian-forgejo-successor-attempt2/modules",
"/work/modules",
"--bind",
"/tmp/custodian-forgejo-successor-attempt2/gocache",
"/work/gocache",
"--dir",
"/run",
"--ro-bind",
"/tmp/custodian-forgejo-successor-r3/descriptor-fixtures",
"/run/forgejo-oidc",
"--bind",
"/tmp/custodian-forgejo-successor-r3/descriptor-fixtures",
"/run/writable-input",
"--setenv",
"PATH",
"/work/go/bin:/usr/bin:/bin",
"--setenv",
"HOME",
"/work/home",
"--setenv",
"GOPATH",
"/work/gopath",
"--setenv",
"GOTOOLCHAIN",
"local",
"--setenv",
"GOPROXY",
"off",
"--setenv",
"GOSUMDB",
"off",
"--setenv",
"GOVCS",
"*:off",
"--setenv",
"GOMODCACHE",
"/work/modules",
"--setenv",
"GOCACHE",
"/work/gocache",
"--setenv",
"GOMAXPROCS",
"4",
"--setenv",
"CGO_ENABLED",
"1",
"--setenv",
"GIT_CONFIG_NOSYSTEM",
"1",
"--setenv",
"GIT_CONFIG_GLOBAL",
"/work/home/test.gitconfig",
"--setenv",
"GIT_TERMINAL_PROMPT",
"0",
"--ro-bind",
"/tmp/custodian-forgejo-postgres-tests-r1-control-lock/auth",
"/work/source/models/auth",
"--bind",
"/tmp/custodian-forgejo-postgres-tests-r1-control-lock",
"/pg-work",
"--dir",
"/run",
"--ro-bind",
"/tmp/custodian-forgejo-postgres-r1-attempt3/socket",
"/run/source-operation-postgres",
"--setenv",
"CUSTODIAN_PG_SOCKET",
"/run/source-operation-postgres",
"--ro-bind",
"/tmp/custodian-forgejo-postgres-tests-r1-control-lock/db",
"/work/source/models/db",
"--",
"go",
"test",
"-c",
"-p",
"4",
"-tags",
"sqlite sqlite_unlock_notify source_operation_postgres",
"-o",
"/pg-work/models-auth.test",
"./models/auth"
],
"workspace": "/tmp/custodian-forgejo-postgres-tests-r1-control-lock",
"source_pins": {
"access_token.go": "sha256:c3131e03c24356fb09fdd600efd17d8054063534355a4c5a3b769f840a58c8ac",
"access_token_scope.go": "sha256:36173156237cc3c3231da78fc9c7e503391ea29c29496721bf4f6b197ab128d3",
"access_token_scope_test.go": "sha256:738bff8f60339a3b4cbd21c31f52812eacde1435fcf55ea657c2a950c262de7d",
"access_token_test.go": "sha256:0121b13b075e6dadb5f6bf5899ceb815786d386cd75214566545b1a3cbe5e721",
"auth_token.go": "sha256:e652217daeffab3c9918efaab56ba4a0a0e8024071840cd8bb85925fe2568bd9",
"main_test.go": "sha256:1c78be2861df2215936939b085bc2bac431f607731fe68da85cfc9c95a4eac87",
"oauth2.go": "sha256:626c075138a8e1dd22d4814b11c6d6acd04e8aae2443e47017de9a289b8f55ac",
"oauth2_list.go": "sha256:2665b0833370d4cb9d0a30e43bd86625f4f707e26a8e5bef53559816aafb7e91",
"oauth2_test.go": "sha256:66e671311715001e2c8119daa944667b9744b4a701732007c6f4510d1daf40ca",
"session.go": "sha256:25d934eb96d2b540a51b7337650b58123ad4ee7e1c61547e7efc1c36eb12c26d",
"session_test.go": "sha256:cae8e667a88143cf7ce3238e8adc9e87fd7f0bdf1b2c0d9b1736c2de38485659",
"source.go": "sha256:33ec2f66652bcb442cd80c36db0a2ad7305e1ee9c9c610d054720eea8ab18e4c",
"source_operation.go": "sha256:137bcc05baf724abfcb9c48a2ef45d5064a6a163c4ba98269364eafb9a1096cd",
"source_operation_internal_test.go": "sha256:af0f424d3a1fd2b29793b64baa1fa07284fee7ea0b7721c503db4efac0d871cb",
"source_operation_postgres_export_test.go": "sha256:b9d1553144766b15c408295b87506106935abf4ed61460598b58dc81825e808d",
"source_operation_postgres_test.go": "sha256:4a37504e5af00580d114ef1bed5cb32e09e4ec2de5fd3192adef043a4ea5f7fe",
"source_operation_process_test.go": "sha256:40d33b11a01cb659f0bf6f8b545c4d79910e8c082a789060bcbc9cadeee965bd",
"source_operation_test.go": "sha256:77d311bca42f48faf3fbdc15c53582e3d8a6d9108a72ed7bb6172e5b88951428",
"source_test.go": "sha256:1ad3f9b198155193fd8193f50084889cc949192abf64c060a5ce3043f2ccb212",
"two_factor.go": "sha256:d3a6e0b348b225d0fc012fdd5a6275736a1b324ec4cd1c013ae80a12531e0b8e",
"two_factor_test.go": "sha256:6a88cb12d204a3b3de49d584d589b1c5a97bfb795160ae93b87707f64bece4fe",
"twofactor.go": "sha256:905e1679be552346758b34c8ee7c950628d965d8bd3946b9b63c6797f41625d6",
"webauthn.go": "sha256:0f9adac61a225854d579ed71338303a30a5abf26e4c115a0afefaa4fd199200e",
"webauthn_test.go": "sha256:03f3487f7c05566e71399ff548a95400a66ed7afc96bbf31365aa7abb79dfa69"
},
"database_source_pins": {
"collation.go": "sha256:9922312734c5cc2a5474b322b88214586916b320969172708f48c7b6eca40e7d",
"common.go": "sha256:f0c626ebedaedb8681a4f3a3531441c49f3e0d305b20730aa47b267b6e16b3fd",
"consistency.go": "sha256:c771f62de8511bfc307583a4585190aba8b38ca2ac76eab200bc901aa15b7bad",
"context.go": "sha256:d4c4acfcb8987071aecf5cd957b3821c8d2619a2696398d37c2970f2527686f7",
"context_committer_test.go": "sha256:83cf7fbfc32aff358221abadee63e96a803a4136c9851cf696c543dc5176d777",
"context_test.go": "sha256:677f6be23f1c855a154de6078a540b60e17c737becfae6115e55ff6d81c3a937",
"convert.go": "sha256:48e62893b598b767dccbf414c0acffbc26c6cfb6cb22ba79eb5b66dbb6c8193a",
"engine.go": "sha256:d21a5b0b9ca37ac48222b79007467a232abc38edda99b3c5f54f1f4c5ab795e8",
"engine_test.go": "sha256:ec78585da5d8b33deb0b55ba3ffd9d8ff4df704ffd62c2d95c2a6ffddd5bc309",
"error.go": "sha256:ca0ead3529d977f90930974200a0a751366629590dae516cb54245d9c75bb280",
"index.go": "sha256:fdfdaf6da41f317d51665bfc03684074aadf5fb32607d80c15ee9b33fdc89f09",
"index_test.go": "sha256:d46ea9d96fc9b51e477ebecb5cfa0e15fc8e13a00c5c84ce620dd23e73663558",
"iterate.go": "sha256:0512e2f2a3785daec26f434f6b55c37e8cd590c1b49d2068f42160c424757e28",
"iterate_test.go": "sha256:8b9eb9d391bd99bddf6b3da5744bd80088eb4d8446c7f51dd3299abe1b8a5ebe",
"list.go": "sha256:e23e7056f9dbce52d85ca922fa4eadb834a6ee3a5dbcafe82485038332b798e0",
"list_test.go": "sha256:5bc42a869931470daf503b51bd3dbf5cb092d37d8cc4e03f80a21f564beadf6a",
"log.go": "sha256:6f080111c46868e337d4d6dd16c56a5743c13b86b412df219701030cd1718a01",
"main_test.go": "sha256:d9eb5ba4ab294ebb2c865969479d6d73db21669f24cc5454ac42f6dbd8825ef3",
"name.go": "sha256:e486e89a36103f56af54f5f39a9b166ac0b08800abaccc2857ab324777dda6b5",
"search.go": "sha256:b488e9a93f95d28450929896ce648e67f6772e1cd8662f7a0a1a8988a24dbfa2",
"sensitive_sql.go": "sha256:06a298d0d6e628e6920384d4ddeef449e40c090841ebaa3f6d175725a45ae584",
"sensitive_sql_logging_test.go": "sha256:d924b35d30686473caf29601cf51cc363ba68158cb4ef0981c9e2fc7b03c04b7",
"sensitive_sql_test.go": "sha256:de6353c955047c3311747e4777b9f9b2195e9efb19160b971dd758dfc94cf31b",
"sequence.go": "sha256:c0e4c7fbaa93961d9711143cfcf4bbb32f197985d21b77424946fbe3a39b38eb",
"sql_postgres_with_schema.go": "sha256:e5941e859ada7831b400fd3143e58f91b1058cb32779d6a4466af01617cf6e7a",
"tracing_context_test.go": "sha256:612b60c67a2be7e2da9173b95d5ef5abd7b9e1e377360828e39a622610bba070"
},
"original_composite_patch": "sha256:15cb7f13b1b1d1095cc344176ca337f705333a436a70ae803fcfd3d7f802ccf4",
"runtime": "custodian-forgejo-pg-96ce905f445a",
"image_id": "sha256:57c72fd2a128e416c7fcc499958864df5301e940bca0a56f58fddf30ffc07777",
"controlled_mutation": {
"mutation": "omit-postgres-lock",
"original_source_sha256": "sha256:ef1b07ef6cf454015d00cde8588835f5118d829da91eb0303d37184859345a31",
"controlled_source_sha256": "sha256:137bcc05baf724abfcb9c48a2ef45d5064a6a163c4ba98269364eafb9a1096cd",
"production_source_changed": false
},
"network": "disabled; only the exact disposable database Unix socket is bound",
"production_database": false,
"actual_authenticated_operation": false,
"real_credentials": false,
"test_binary_sha256": "sha256:82043a82a461a942ff747c59238a3113b5d06de06a2d927c7946df3b22d89498"
}

View file

@ -0,0 +1,200 @@
{
"action": "build",
"returncode": 0,
"expected_returncode": 0,
"outcome_matches": true,
"seconds": 7.8,
"argv": [
"bwrap",
"--unshare-pid",
"--die-with-parent",
"--new-session",
"--unshare-net",
"--ro-bind",
"/usr",
"/usr",
"--ro-bind",
"/lib",
"/lib",
"--ro-bind",
"/lib64",
"/lib64",
"--symlink",
"usr/bin",
"/bin",
"--proc",
"/proc",
"--dev",
"/dev",
"--tmpfs",
"/tmp",
"--bind",
"/tmp/custodian-forgejo-successor-r3",
"/work",
"--ro-bind",
"/home/worsch/go/pkg/mod/cache/download",
"/cached",
"--ro-bind",
"/etc/ssl/certs",
"/etc/ssl/certs",
"--ro-bind",
"/etc/resolv.conf",
"/etc/resolv.conf",
"--chdir",
"/work/source",
"--clearenv",
"--ro-bind",
"/tmp/custodian-forgejo-successor-attempt2/modules",
"/work/modules",
"--bind",
"/tmp/custodian-forgejo-successor-attempt2/gocache",
"/work/gocache",
"--dir",
"/run",
"--ro-bind",
"/tmp/custodian-forgejo-successor-r3/descriptor-fixtures",
"/run/forgejo-oidc",
"--bind",
"/tmp/custodian-forgejo-successor-r3/descriptor-fixtures",
"/run/writable-input",
"--setenv",
"PATH",
"/work/go/bin:/usr/bin:/bin",
"--setenv",
"HOME",
"/work/home",
"--setenv",
"GOPATH",
"/work/gopath",
"--setenv",
"GOTOOLCHAIN",
"local",
"--setenv",
"GOPROXY",
"off",
"--setenv",
"GOSUMDB",
"off",
"--setenv",
"GOVCS",
"*:off",
"--setenv",
"GOMODCACHE",
"/work/modules",
"--setenv",
"GOCACHE",
"/work/gocache",
"--setenv",
"GOMAXPROCS",
"4",
"--setenv",
"CGO_ENABLED",
"1",
"--setenv",
"GIT_CONFIG_NOSYSTEM",
"1",
"--setenv",
"GIT_CONFIG_GLOBAL",
"/work/home/test.gitconfig",
"--setenv",
"GIT_TERMINAL_PROMPT",
"0",
"--ro-bind",
"/tmp/custodian-forgejo-postgres-tests-r1-control-private/auth",
"/work/source/models/auth",
"--bind",
"/tmp/custodian-forgejo-postgres-tests-r1-control-private",
"/pg-work",
"--dir",
"/run",
"--ro-bind",
"/tmp/custodian-forgejo-postgres-r1-attempt3/socket",
"/run/source-operation-postgres",
"--setenv",
"CUSTODIAN_PG_SOCKET",
"/run/source-operation-postgres",
"--ro-bind",
"/tmp/custodian-forgejo-postgres-tests-r1-control-private/db",
"/work/source/models/db",
"--",
"go",
"test",
"-c",
"-p",
"4",
"-tags",
"sqlite sqlite_unlock_notify source_operation_postgres",
"-o",
"/pg-work/models-auth.test",
"./models/auth"
],
"workspace": "/tmp/custodian-forgejo-postgres-tests-r1-control-private",
"source_pins": {
"access_token.go": "sha256:c3131e03c24356fb09fdd600efd17d8054063534355a4c5a3b769f840a58c8ac",
"access_token_scope.go": "sha256:36173156237cc3c3231da78fc9c7e503391ea29c29496721bf4f6b197ab128d3",
"access_token_scope_test.go": "sha256:738bff8f60339a3b4cbd21c31f52812eacde1435fcf55ea657c2a950c262de7d",
"access_token_test.go": "sha256:0121b13b075e6dadb5f6bf5899ceb815786d386cd75214566545b1a3cbe5e721",
"auth_token.go": "sha256:e652217daeffab3c9918efaab56ba4a0a0e8024071840cd8bb85925fe2568bd9",
"main_test.go": "sha256:1c78be2861df2215936939b085bc2bac431f607731fe68da85cfc9c95a4eac87",
"oauth2.go": "sha256:626c075138a8e1dd22d4814b11c6d6acd04e8aae2443e47017de9a289b8f55ac",
"oauth2_list.go": "sha256:2665b0833370d4cb9d0a30e43bd86625f4f707e26a8e5bef53559816aafb7e91",
"oauth2_test.go": "sha256:66e671311715001e2c8119daa944667b9744b4a701732007c6f4510d1daf40ca",
"session.go": "sha256:25d934eb96d2b540a51b7337650b58123ad4ee7e1c61547e7efc1c36eb12c26d",
"session_test.go": "sha256:cae8e667a88143cf7ce3238e8adc9e87fd7f0bdf1b2c0d9b1736c2de38485659",
"source.go": "sha256:33ec2f66652bcb442cd80c36db0a2ad7305e1ee9c9c610d054720eea8ab18e4c",
"source_operation.go": "sha256:0b9e248b685a950cfbf31f76aafd54e1b99272402a2f05bc6d8b742bc2657d82",
"source_operation_internal_test.go": "sha256:af0f424d3a1fd2b29793b64baa1fa07284fee7ea0b7721c503db4efac0d871cb",
"source_operation_postgres_export_test.go": "sha256:b9d1553144766b15c408295b87506106935abf4ed61460598b58dc81825e808d",
"source_operation_postgres_test.go": "sha256:4a37504e5af00580d114ef1bed5cb32e09e4ec2de5fd3192adef043a4ea5f7fe",
"source_operation_process_test.go": "sha256:40d33b11a01cb659f0bf6f8b545c4d79910e8c082a789060bcbc9cadeee965bd",
"source_operation_test.go": "sha256:77d311bca42f48faf3fbdc15c53582e3d8a6d9108a72ed7bb6172e5b88951428",
"source_test.go": "sha256:1ad3f9b198155193fd8193f50084889cc949192abf64c060a5ce3043f2ccb212",
"two_factor.go": "sha256:d3a6e0b348b225d0fc012fdd5a6275736a1b324ec4cd1c013ae80a12531e0b8e",
"two_factor_test.go": "sha256:6a88cb12d204a3b3de49d584d589b1c5a97bfb795160ae93b87707f64bece4fe",
"twofactor.go": "sha256:905e1679be552346758b34c8ee7c950628d965d8bd3946b9b63c6797f41625d6",
"webauthn.go": "sha256:0f9adac61a225854d579ed71338303a30a5abf26e4c115a0afefaa4fd199200e",
"webauthn_test.go": "sha256:03f3487f7c05566e71399ff548a95400a66ed7afc96bbf31365aa7abb79dfa69"
},
"database_source_pins": {
"collation.go": "sha256:9922312734c5cc2a5474b322b88214586916b320969172708f48c7b6eca40e7d",
"common.go": "sha256:f0c626ebedaedb8681a4f3a3531441c49f3e0d305b20730aa47b267b6e16b3fd",
"consistency.go": "sha256:c771f62de8511bfc307583a4585190aba8b38ca2ac76eab200bc901aa15b7bad",
"context.go": "sha256:d4c4acfcb8987071aecf5cd957b3821c8d2619a2696398d37c2970f2527686f7",
"context_committer_test.go": "sha256:83cf7fbfc32aff358221abadee63e96a803a4136c9851cf696c543dc5176d777",
"context_test.go": "sha256:677f6be23f1c855a154de6078a540b60e17c737becfae6115e55ff6d81c3a937",
"convert.go": "sha256:48e62893b598b767dccbf414c0acffbc26c6cfb6cb22ba79eb5b66dbb6c8193a",
"engine.go": "sha256:d21a5b0b9ca37ac48222b79007467a232abc38edda99b3c5f54f1f4c5ab795e8",
"engine_test.go": "sha256:ec78585da5d8b33deb0b55ba3ffd9d8ff4df704ffd62c2d95c2a6ffddd5bc309",
"error.go": "sha256:ca0ead3529d977f90930974200a0a751366629590dae516cb54245d9c75bb280",
"index.go": "sha256:fdfdaf6da41f317d51665bfc03684074aadf5fb32607d80c15ee9b33fdc89f09",
"index_test.go": "sha256:d46ea9d96fc9b51e477ebecb5cfa0e15fc8e13a00c5c84ce620dd23e73663558",
"iterate.go": "sha256:0512e2f2a3785daec26f434f6b55c37e8cd590c1b49d2068f42160c424757e28",
"iterate_test.go": "sha256:8b9eb9d391bd99bddf6b3da5744bd80088eb4d8446c7f51dd3299abe1b8a5ebe",
"list.go": "sha256:e23e7056f9dbce52d85ca922fa4eadb834a6ee3a5dbcafe82485038332b798e0",
"list_test.go": "sha256:5bc42a869931470daf503b51bd3dbf5cb092d37d8cc4e03f80a21f564beadf6a",
"log.go": "sha256:6f080111c46868e337d4d6dd16c56a5743c13b86b412df219701030cd1718a01",
"main_test.go": "sha256:d9eb5ba4ab294ebb2c865969479d6d73db21669f24cc5454ac42f6dbd8825ef3",
"name.go": "sha256:e486e89a36103f56af54f5f39a9b166ac0b08800abaccc2857ab324777dda6b5",
"search.go": "sha256:b488e9a93f95d28450929896ce648e67f6772e1cd8662f7a0a1a8988a24dbfa2",
"sensitive_sql.go": "sha256:06a298d0d6e628e6920384d4ddeef449e40c090841ebaa3f6d175725a45ae584",
"sensitive_sql_logging_test.go": "sha256:d924b35d30686473caf29601cf51cc363ba68158cb4ef0981c9e2fc7b03c04b7",
"sensitive_sql_test.go": "sha256:de6353c955047c3311747e4777b9f9b2195e9efb19160b971dd758dfc94cf31b",
"sequence.go": "sha256:c0e4c7fbaa93961d9711143cfcf4bbb32f197985d21b77424946fbe3a39b38eb",
"sql_postgres_with_schema.go": "sha256:e5941e859ada7831b400fd3143e58f91b1058cb32779d6a4466af01617cf6e7a",
"tracing_context_test.go": "sha256:612b60c67a2be7e2da9173b95d5ef5abd7b9e1e377360828e39a622610bba070"
},
"original_composite_patch": "sha256:15cb7f13b1b1d1095cc344176ca337f705333a436a70ae803fcfd3d7f802ccf4",
"runtime": "custodian-forgejo-pg-96ce905f445a",
"image_id": "sha256:57c72fd2a128e416c7fcc499958864df5301e940bca0a56f58fddf30ffc07777",
"controlled_mutation": {
"mutation": "omit-private-context",
"original_source_sha256": "sha256:ef1b07ef6cf454015d00cde8588835f5118d829da91eb0303d37184859345a31",
"controlled_source_sha256": "sha256:0b9e248b685a950cfbf31f76aafd54e1b99272402a2f05bc6d8b742bc2657d82",
"production_source_changed": false
},
"network": "disabled; only the exact disposable database Unix socket is bound",
"production_database": false,
"actual_authenticated_operation": false,
"real_credentials": false,
"test_binary_sha256": "sha256:e5acaf24f87a94f58b1cd9000f04a08186b35f29e6e848835ecd3c7105a9de72"
}

View file

@ -0,0 +1,201 @@
{
"action": "combined-regressions",
"returncode": 1,
"expected_returncode": 0,
"outcome_matches": false,
"seconds": 113.49,
"argv": [
"bwrap",
"--unshare-pid",
"--die-with-parent",
"--new-session",
"--unshare-net",
"--ro-bind",
"/usr",
"/usr",
"--ro-bind",
"/lib",
"/lib",
"--ro-bind",
"/lib64",
"/lib64",
"--symlink",
"usr/bin",
"/bin",
"--proc",
"/proc",
"--dev",
"/dev",
"--tmpfs",
"/tmp",
"--bind",
"/tmp/custodian-forgejo-successor-r3",
"/work",
"--ro-bind",
"/home/worsch/go/pkg/mod/cache/download",
"/cached",
"--ro-bind",
"/etc/ssl/certs",
"/etc/ssl/certs",
"--ro-bind",
"/etc/resolv.conf",
"/etc/resolv.conf",
"--chdir",
"/work/source",
"--clearenv",
"--ro-bind",
"/tmp/custodian-forgejo-successor-attempt2/modules",
"/work/modules",
"--bind",
"/tmp/custodian-forgejo-successor-attempt2/gocache",
"/work/gocache",
"--dir",
"/run",
"--ro-bind",
"/tmp/custodian-forgejo-successor-r3/descriptor-fixtures",
"/run/forgejo-oidc",
"--bind",
"/tmp/custodian-forgejo-successor-r3/descriptor-fixtures",
"/run/writable-input",
"--setenv",
"PATH",
"/work/go/bin:/usr/bin:/bin",
"--setenv",
"HOME",
"/work/home",
"--setenv",
"GOPATH",
"/work/gopath",
"--setenv",
"GOTOOLCHAIN",
"local",
"--setenv",
"GOPROXY",
"off",
"--setenv",
"GOSUMDB",
"off",
"--setenv",
"GOVCS",
"*:off",
"--setenv",
"GOMODCACHE",
"/work/modules",
"--setenv",
"GOCACHE",
"/work/gocache",
"--setenv",
"GOMAXPROCS",
"4",
"--setenv",
"CGO_ENABLED",
"1",
"--setenv",
"GIT_CONFIG_NOSYSTEM",
"1",
"--setenv",
"GIT_CONFIG_GLOBAL",
"/work/home/test.gitconfig",
"--setenv",
"GIT_TERMINAL_PROMPT",
"0",
"--ro-bind",
"/tmp/custodian-forgejo-postgres-tests-r1-attempt5/auth",
"/work/source/models/auth",
"--bind",
"/tmp/custodian-forgejo-postgres-tests-r1-attempt5",
"/pg-work",
"--dir",
"/run",
"--ro-bind",
"/tmp/custodian-forgejo-postgres-r1-attempt3/socket",
"/run/source-operation-postgres",
"--setenv",
"CUSTODIAN_PG_SOCKET",
"/run/source-operation-postgres",
"--ro-bind",
"/tmp/custodian-forgejo-postgres-tests-r1-attempt5/db",
"/work/source/models/db",
"--",
"go",
"test",
"-p",
"1",
"-json",
"-tags",
"sqlite sqlite_unlock_notify",
"./services/auth/source/oauth2",
"./cmd",
"./models/auth",
"./models/db",
"-run",
"TestAccessEngine|TestVerifiedApplicationIdentity|TestRequired|TestCurrent|TestPrivateSecret|TestSourceOperation|TestSensitiveSQL|TestTracingContext",
"-count=1"
],
"workspace": "/tmp/custodian-forgejo-postgres-tests-r1-attempt5",
"source_pins": {
"access_token.go": "sha256:c3131e03c24356fb09fdd600efd17d8054063534355a4c5a3b769f840a58c8ac",
"access_token_scope.go": "sha256:36173156237cc3c3231da78fc9c7e503391ea29c29496721bf4f6b197ab128d3",
"access_token_scope_test.go": "sha256:738bff8f60339a3b4cbd21c31f52812eacde1435fcf55ea657c2a950c262de7d",
"access_token_test.go": "sha256:0121b13b075e6dadb5f6bf5899ceb815786d386cd75214566545b1a3cbe5e721",
"auth_token.go": "sha256:e652217daeffab3c9918efaab56ba4a0a0e8024071840cd8bb85925fe2568bd9",
"main_test.go": "sha256:1c78be2861df2215936939b085bc2bac431f607731fe68da85cfc9c95a4eac87",
"oauth2.go": "sha256:626c075138a8e1dd22d4814b11c6d6acd04e8aae2443e47017de9a289b8f55ac",
"oauth2_list.go": "sha256:2665b0833370d4cb9d0a30e43bd86625f4f707e26a8e5bef53559816aafb7e91",
"oauth2_test.go": "sha256:66e671311715001e2c8119daa944667b9744b4a701732007c6f4510d1daf40ca",
"session.go": "sha256:25d934eb96d2b540a51b7337650b58123ad4ee7e1c61547e7efc1c36eb12c26d",
"session_test.go": "sha256:cae8e667a88143cf7ce3238e8adc9e87fd7f0bdf1b2c0d9b1736c2de38485659",
"source.go": "sha256:33ec2f66652bcb442cd80c36db0a2ad7305e1ee9c9c610d054720eea8ab18e4c",
"source_operation.go": "sha256:ef1b07ef6cf454015d00cde8588835f5118d829da91eb0303d37184859345a31",
"source_operation_internal_test.go": "sha256:af0f424d3a1fd2b29793b64baa1fa07284fee7ea0b7721c503db4efac0d871cb",
"source_operation_postgres_export_test.go": "sha256:b9d1553144766b15c408295b87506106935abf4ed61460598b58dc81825e808d",
"source_operation_postgres_test.go": "sha256:4a37504e5af00580d114ef1bed5cb32e09e4ec2de5fd3192adef043a4ea5f7fe",
"source_operation_process_test.go": "sha256:40d33b11a01cb659f0bf6f8b545c4d79910e8c082a789060bcbc9cadeee965bd",
"source_operation_test.go": "sha256:77d311bca42f48faf3fbdc15c53582e3d8a6d9108a72ed7bb6172e5b88951428",
"source_test.go": "sha256:1ad3f9b198155193fd8193f50084889cc949192abf64c060a5ce3043f2ccb212",
"two_factor.go": "sha256:d3a6e0b348b225d0fc012fdd5a6275736a1b324ec4cd1c013ae80a12531e0b8e",
"two_factor_test.go": "sha256:6a88cb12d204a3b3de49d584d589b1c5a97bfb795160ae93b87707f64bece4fe",
"twofactor.go": "sha256:905e1679be552346758b34c8ee7c950628d965d8bd3946b9b63c6797f41625d6",
"webauthn.go": "sha256:0f9adac61a225854d579ed71338303a30a5abf26e4c115a0afefaa4fd199200e",
"webauthn_test.go": "sha256:03f3487f7c05566e71399ff548a95400a66ed7afc96bbf31365aa7abb79dfa69"
},
"database_source_pins": {
"collation.go": "sha256:9922312734c5cc2a5474b322b88214586916b320969172708f48c7b6eca40e7d",
"common.go": "sha256:f0c626ebedaedb8681a4f3a3531441c49f3e0d305b20730aa47b267b6e16b3fd",
"consistency.go": "sha256:c771f62de8511bfc307583a4585190aba8b38ca2ac76eab200bc901aa15b7bad",
"context.go": "sha256:d4c4acfcb8987071aecf5cd957b3821c8d2619a2696398d37c2970f2527686f7",
"context_committer_test.go": "sha256:83cf7fbfc32aff358221abadee63e96a803a4136c9851cf696c543dc5176d777",
"context_test.go": "sha256:677f6be23f1c855a154de6078a540b60e17c737becfae6115e55ff6d81c3a937",
"convert.go": "sha256:48e62893b598b767dccbf414c0acffbc26c6cfb6cb22ba79eb5b66dbb6c8193a",
"engine.go": "sha256:d21a5b0b9ca37ac48222b79007467a232abc38edda99b3c5f54f1f4c5ab795e8",
"engine_test.go": "sha256:ec78585da5d8b33deb0b55ba3ffd9d8ff4df704ffd62c2d95c2a6ffddd5bc309",
"error.go": "sha256:ca0ead3529d977f90930974200a0a751366629590dae516cb54245d9c75bb280",
"index.go": "sha256:fdfdaf6da41f317d51665bfc03684074aadf5fb32607d80c15ee9b33fdc89f09",
"index_test.go": "sha256:d46ea9d96fc9b51e477ebecb5cfa0e15fc8e13a00c5c84ce620dd23e73663558",
"iterate.go": "sha256:0512e2f2a3785daec26f434f6b55c37e8cd590c1b49d2068f42160c424757e28",
"iterate_test.go": "sha256:8b9eb9d391bd99bddf6b3da5744bd80088eb4d8446c7f51dd3299abe1b8a5ebe",
"list.go": "sha256:e23e7056f9dbce52d85ca922fa4eadb834a6ee3a5dbcafe82485038332b798e0",
"list_test.go": "sha256:5bc42a869931470daf503b51bd3dbf5cb092d37d8cc4e03f80a21f564beadf6a",
"log.go": "sha256:6f080111c46868e337d4d6dd16c56a5743c13b86b412df219701030cd1718a01",
"main_test.go": "sha256:d9eb5ba4ab294ebb2c865969479d6d73db21669f24cc5454ac42f6dbd8825ef3",
"name.go": "sha256:e486e89a36103f56af54f5f39a9b166ac0b08800abaccc2857ab324777dda6b5",
"search.go": "sha256:b488e9a93f95d28450929896ce648e67f6772e1cd8662f7a0a1a8988a24dbfa2",
"sensitive_sql.go": "sha256:06a298d0d6e628e6920384d4ddeef449e40c090841ebaa3f6d175725a45ae584",
"sensitive_sql_logging_test.go": "sha256:d924b35d30686473caf29601cf51cc363ba68158cb4ef0981c9e2fc7b03c04b7",
"sensitive_sql_test.go": "sha256:de6353c955047c3311747e4777b9f9b2195e9efb19160b971dd758dfc94cf31b",
"sequence.go": "sha256:c0e4c7fbaa93961d9711143cfcf4bbb32f197985d21b77424946fbe3a39b38eb",
"sql_postgres_with_schema.go": "sha256:e5941e859ada7831b400fd3143e58f91b1058cb32779d6a4466af01617cf6e7a",
"tracing_context_test.go": "sha256:612b60c67a2be7e2da9173b95d5ef5abd7b9e1e377360828e39a622610bba070"
},
"original_composite_patch": "sha256:15cb7f13b1b1d1095cc344176ca337f705333a436a70ae803fcfd3d7f802ccf4",
"runtime": "custodian-forgejo-pg-96ce905f445a",
"image_id": "sha256:57c72fd2a128e416c7fcc499958864df5301e940bca0a56f58fddf30ffc07777",
"controlled_mutation": {
"mutation": "none"
},
"network": "disabled; only the exact disposable database Unix socket is bound",
"production_database": false,
"actual_authenticated_operation": false,
"real_credentials": false,
"test_binary_sha256": "sha256:ea124dc75fa8c4d4063fdd2df57e506c1cd53e3c4478597e2d51b5c214de7569"
}

View file

@ -0,0 +1,437 @@
{"Time":"2026-10-18T01:08:37.942357346Z","Action":"start","Package":"forgejo.org/services/auth/source/oauth2"}
{"Time":"2026-10-18T01:08:38.02991623Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals"}
{"Time":"2026-10-18T01:08:38.029972101Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals","Output":"=== RUN TestAccessEngineKeyCapeAssuranceRefusals\n"}
{"Time":"2026-10-18T01:08:38.030052643Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/mixed-methods"}
{"Time":"2026-10-18T01:08:38.030060128Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/mixed-methods","Output":"=== RUN TestAccessEngineKeyCapeAssuranceRefusals/mixed-methods\n"}
{"Time":"2026-10-18T01:08:38.032547509Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/mixed-methods","Output":"--- PASS: TestAccessEngineKeyCapeAssuranceRefusals/mixed-methods (0.00s)\n"}
{"Time":"2026-10-18T01:08:38.032605661Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/mixed-methods","Elapsed":0}
{"Time":"2026-10-18T01:08:38.032622902Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/duplicate-methods"}
{"Time":"2026-10-18T01:08:38.032633263Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/duplicate-methods","Output":"=== RUN TestAccessEngineKeyCapeAssuranceRefusals/duplicate-methods\n"}
{"Time":"2026-10-18T01:08:38.03287782Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/duplicate-methods","Output":"--- PASS: TestAccessEngineKeyCapeAssuranceRefusals/duplicate-methods (0.00s)\n"}
{"Time":"2026-10-18T01:08:38.032903393Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/duplicate-methods","Elapsed":0}
{"Time":"2026-10-18T01:08:38.032916089Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/missing-at"}
{"Time":"2026-10-18T01:08:38.03292388Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/missing-at","Output":"=== RUN TestAccessEngineKeyCapeAssuranceRefusals/missing-at\n"}
{"Time":"2026-10-18T01:08:38.033385888Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/missing-at","Output":"--- PASS: TestAccessEngineKeyCapeAssuranceRefusals/missing-at (0.00s)\n"}
{"Time":"2026-10-18T01:08:38.033415275Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/missing-at","Elapsed":0}
{"Time":"2026-10-18T01:08:38.033425248Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/string-at"}
{"Time":"2026-10-18T01:08:38.033432543Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/string-at","Output":"=== RUN TestAccessEngineKeyCapeAssuranceRefusals/string-at\n"}
{"Time":"2026-10-18T01:08:38.033828689Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/string-at","Output":"--- PASS: TestAccessEngineKeyCapeAssuranceRefusals/string-at (0.00s)\n"}
{"Time":"2026-10-18T01:08:38.033863369Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/string-at","Elapsed":0}
{"Time":"2026-10-18T01:08:38.033873279Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/wrong-level"}
{"Time":"2026-10-18T01:08:38.033903649Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/wrong-level","Output":"=== RUN TestAccessEngineKeyCapeAssuranceRefusals/wrong-level\n"}
{"Time":"2026-10-18T01:08:38.034191579Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/wrong-level","Output":"--- PASS: TestAccessEngineKeyCapeAssuranceRefusals/wrong-level (0.00s)\n"}
{"Time":"2026-10-18T01:08:38.0342135Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/wrong-level","Elapsed":0}
{"Time":"2026-10-18T01:08:38.034221155Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/object-methods"}
{"Time":"2026-10-18T01:08:38.034226872Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/object-methods","Output":"=== RUN TestAccessEngineKeyCapeAssuranceRefusals/object-methods\n"}
{"Time":"2026-10-18T01:08:38.034536047Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/object-methods","Output":"--- PASS: TestAccessEngineKeyCapeAssuranceRefusals/object-methods (0.00s)\n"}
{"Time":"2026-10-18T01:08:38.034556804Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/object-methods","Elapsed":0}
{"Time":"2026-10-18T01:08:38.034563928Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/empty-methods"}
{"Time":"2026-10-18T01:08:38.034569356Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/empty-methods","Output":"=== RUN TestAccessEngineKeyCapeAssuranceRefusals/empty-methods\n"}
{"Time":"2026-10-18T01:08:38.034897584Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/empty-methods","Output":"--- PASS: TestAccessEngineKeyCapeAssuranceRefusals/empty-methods (0.00s)\n"}
{"Time":"2026-10-18T01:08:38.034920632Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/empty-methods","Elapsed":0}
{"Time":"2026-10-18T01:08:38.03492827Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/unknown-object-field"}
{"Time":"2026-10-18T01:08:38.034933825Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/unknown-object-field","Output":"=== RUN TestAccessEngineKeyCapeAssuranceRefusals/unknown-object-field\n"}
{"Time":"2026-10-18T01:08:38.035216317Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/unknown-object-field","Output":"--- PASS: TestAccessEngineKeyCapeAssuranceRefusals/unknown-object-field (0.00s)\n"}
{"Time":"2026-10-18T01:08:38.035238716Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/unknown-object-field","Elapsed":0}
{"Time":"2026-10-18T01:08:38.035247949Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/stale-authentication"}
{"Time":"2026-10-18T01:08:38.035253477Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/stale-authentication","Output":"=== RUN TestAccessEngineKeyCapeAssuranceRefusals/stale-authentication\n"}
{"Time":"2026-10-18T01:08:38.035604437Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/stale-authentication","Output":"--- PASS: TestAccessEngineKeyCapeAssuranceRefusals/stale-authentication (0.00s)\n"}
{"Time":"2026-10-18T01:08:38.035655493Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/stale-authentication","Elapsed":0}
{"Time":"2026-10-18T01:08:38.035668388Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/future-authentication"}
{"Time":"2026-10-18T01:08:38.035674916Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/future-authentication","Output":"=== RUN TestAccessEngineKeyCapeAssuranceRefusals/future-authentication\n"}
{"Time":"2026-10-18T01:08:38.035949068Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/future-authentication","Output":"--- PASS: TestAccessEngineKeyCapeAssuranceRefusals/future-authentication (0.00s)\n"}
{"Time":"2026-10-18T01:08:38.035980105Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/future-authentication","Elapsed":0}
{"Time":"2026-10-18T01:08:38.036118619Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/fractional-at"}
{"Time":"2026-10-18T01:08:38.036129954Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/fractional-at","Output":"=== RUN TestAccessEngineKeyCapeAssuranceRefusals/fractional-at\n"}
{"Time":"2026-10-18T01:08:38.036407766Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/fractional-at","Output":"--- PASS: TestAccessEngineKeyCapeAssuranceRefusals/fractional-at (0.00s)\n"}
{"Time":"2026-10-18T01:08:38.036427532Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/fractional-at","Elapsed":0}
{"Time":"2026-10-18T01:08:38.036434971Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/integer-mfa"}
{"Time":"2026-10-18T01:08:38.036444196Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/integer-mfa","Output":"=== RUN TestAccessEngineKeyCapeAssuranceRefusals/integer-mfa\n"}
{"Time":"2026-10-18T01:08:38.036752288Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/integer-mfa","Output":"--- PASS: TestAccessEngineKeyCapeAssuranceRefusals/integer-mfa (0.00s)\n"}
{"Time":"2026-10-18T01:08:38.036769718Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/integer-mfa","Elapsed":0}
{"Time":"2026-10-18T01:08:38.036777076Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/inconsistent-mfa"}
{"Time":"2026-10-18T01:08:38.036782613Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/inconsistent-mfa","Output":"=== RUN TestAccessEngineKeyCapeAssuranceRefusals/inconsistent-mfa\n"}
{"Time":"2026-10-18T01:08:38.037139757Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/inconsistent-mfa","Output":"--- PASS: TestAccessEngineKeyCapeAssuranceRefusals/inconsistent-mfa (0.00s)\n"}
{"Time":"2026-10-18T01:08:38.037172607Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/inconsistent-mfa","Elapsed":0}
{"Time":"2026-10-18T01:08:38.037185204Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/wrong-source"}
{"Time":"2026-10-18T01:08:38.037191066Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/wrong-source","Output":"=== RUN TestAccessEngineKeyCapeAssuranceRefusals/wrong-source\n"}
{"Time":"2026-10-18T01:08:38.037586335Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/wrong-source","Output":"--- PASS: TestAccessEngineKeyCapeAssuranceRefusals/wrong-source (0.00s)\n"}
{"Time":"2026-10-18T01:08:38.037615515Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/wrong-source","Elapsed":0}
{"Time":"2026-10-18T01:08:38.038228381Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals","Output":"--- PASS: TestAccessEngineKeyCapeAssuranceRefusals (0.01s)\n"}
{"Time":"2026-10-18T01:08:38.038255127Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals","Elapsed":0.01}
{"Time":"2026-10-18T01:08:38.038263323Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeIdentityFactsAndFreshnessBounds"}
{"Time":"2026-10-18T01:08:38.038267769Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeIdentityFactsAndFreshnessBounds","Output":"=== RUN TestAccessEngineKeyCapeIdentityFactsAndFreshnessBounds\n"}
{"Time":"2026-10-18T01:08:38.038744348Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeIdentityFactsAndFreshnessBounds","Output":"--- PASS: TestAccessEngineKeyCapeIdentityFactsAndFreshnessBounds (0.00s)\n"}
{"Time":"2026-10-18T01:08:38.038763465Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeIdentityFactsAndFreshnessBounds","Elapsed":0}
{"Time":"2026-10-18T01:08:38.038769597Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeLowerAssuranceIsAnIdentityFact"}
{"Time":"2026-10-18T01:08:38.038777018Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeLowerAssuranceIsAnIdentityFact","Output":"=== RUN TestAccessEngineKeyCapeLowerAssuranceIsAnIdentityFact\n"}
{"Time":"2026-10-18T01:08:38.039129691Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeLowerAssuranceIsAnIdentityFact","Output":"--- PASS: TestAccessEngineKeyCapeLowerAssuranceIsAnIdentityFact (0.00s)\n"}
{"Time":"2026-10-18T01:08:38.039146022Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeLowerAssuranceIsAnIdentityFact","Elapsed":0}
{"Time":"2026-10-18T01:08:38.039151396Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineAuthorizedPartyRefusesAnotherClient"}
{"Time":"2026-10-18T01:08:38.039155535Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineAuthorizedPartyRefusesAnotherClient","Output":"=== RUN TestAccessEngineAuthorizedPartyRefusesAnotherClient\n"}
{"Time":"2026-10-18T01:08:38.039162406Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineAuthorizedPartyRefusesAnotherClient/empty"}
{"Time":"2026-10-18T01:08:38.039166383Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineAuthorizedPartyRefusesAnotherClient/empty","Output":"=== RUN TestAccessEngineAuthorizedPartyRefusesAnotherClient/empty\n"}
{"Time":"2026-10-18T01:08:38.039589896Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineAuthorizedPartyRefusesAnotherClient/empty","Output":"--- PASS: TestAccessEngineAuthorizedPartyRefusesAnotherClient/empty (0.00s)\n"}
{"Time":"2026-10-18T01:08:38.039619788Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineAuthorizedPartyRefusesAnotherClient/empty","Elapsed":0}
{"Time":"2026-10-18T01:08:38.039626226Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineAuthorizedPartyRefusesAnotherClient/other-client"}
{"Time":"2026-10-18T01:08:38.03964601Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineAuthorizedPartyRefusesAnotherClient/other-client","Output":"=== RUN TestAccessEngineAuthorizedPartyRefusesAnotherClient/other-client\n"}
{"Time":"2026-10-18T01:08:38.040082661Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineAuthorizedPartyRefusesAnotherClient/other-client","Output":"--- PASS: TestAccessEngineAuthorizedPartyRefusesAnotherClient/other-client (0.00s)\n"}
{"Time":"2026-10-18T01:08:38.040112806Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineAuthorizedPartyRefusesAnotherClient/other-client","Elapsed":0}
{"Time":"2026-10-18T01:08:38.040119533Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineAuthorizedPartyRefusesAnotherClient/number"}
{"Time":"2026-10-18T01:08:38.040124727Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineAuthorizedPartyRefusesAnotherClient/number","Output":"=== RUN TestAccessEngineAuthorizedPartyRefusesAnotherClient/number\n"}
{"Time":"2026-10-18T01:08:38.040412575Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineAuthorizedPartyRefusesAnotherClient/number","Output":"--- PASS: TestAccessEngineAuthorizedPartyRefusesAnotherClient/number (0.00s)\n"}
{"Time":"2026-10-18T01:08:38.040441863Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineAuthorizedPartyRefusesAnotherClient/number","Elapsed":0}
{"Time":"2026-10-18T01:08:38.040450682Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineAuthorizedPartyRefusesAnotherClient/array"}
{"Time":"2026-10-18T01:08:38.040455552Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineAuthorizedPartyRefusesAnotherClient/array","Output":"=== RUN TestAccessEngineAuthorizedPartyRefusesAnotherClient/array\n"}
{"Time":"2026-10-18T01:08:38.040935613Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineAuthorizedPartyRefusesAnotherClient/array","Output":"--- PASS: TestAccessEngineAuthorizedPartyRefusesAnotherClient/array (0.00s)\n"}
{"Time":"2026-10-18T01:08:38.040977543Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineAuthorizedPartyRefusesAnotherClient/array","Elapsed":0}
{"Time":"2026-10-18T01:08:38.040986488Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineAuthorizedPartyRefusesAnotherClient","Output":"--- PASS: TestAccessEngineAuthorizedPartyRefusesAnotherClient (0.00s)\n"}
{"Time":"2026-10-18T01:08:38.040993333Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineAuthorizedPartyRefusesAnotherClient","Elapsed":0}
{"Time":"2026-10-18T01:08:38.040998977Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineAuthorizedPartyAcceptsAdmittedClient"}
{"Time":"2026-10-18T01:08:38.041003793Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineAuthorizedPartyAcceptsAdmittedClient","Output":"=== RUN TestAccessEngineAuthorizedPartyAcceptsAdmittedClient\n"}
{"Time":"2026-10-18T01:08:38.041969774Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineAuthorizedPartyAcceptsAdmittedClient","Output":"--- PASS: TestAccessEngineAuthorizedPartyAcceptsAdmittedClient (0.00s)\n"}
{"Time":"2026-10-18T01:08:38.042022831Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineAuthorizedPartyAcceptsAdmittedClient","Elapsed":0}
{"Time":"2026-10-18T01:08:38.042034039Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackAllowsAuthenticatedDecision"}
{"Time":"2026-10-18T01:08:38.042063941Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackAllowsAuthenticatedDecision","Output":"=== RUN TestAccessEngineActualCallbackAllowsAuthenticatedDecision\n"}
{"Time":"2026-10-18T01:08:38.042081281Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackAllowsAuthenticatedDecision/forge-admins"}
{"Time":"2026-10-18T01:08:38.042087818Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackAllowsAuthenticatedDecision/forge-admins","Output":"=== RUN TestAccessEngineActualCallbackAllowsAuthenticatedDecision/forge-admins\n"}
{"Time":"2026-10-18T01:08:38.060386001Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackAllowsAuthenticatedDecision/forge-admins","Output":"--- PASS: TestAccessEngineActualCallbackAllowsAuthenticatedDecision/forge-admins (0.02s)\n"}
{"Time":"2026-10-18T01:08:38.060433171Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackAllowsAuthenticatedDecision/forge-admins","Elapsed":0.02}
{"Time":"2026-10-18T01:08:38.06044024Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackAllowsAuthenticatedDecision/forge-coulomb-owners"}
{"Time":"2026-10-18T01:08:38.060443811Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackAllowsAuthenticatedDecision/forge-coulomb-owners","Output":"=== RUN TestAccessEngineActualCallbackAllowsAuthenticatedDecision/forge-coulomb-owners\n"}
{"Time":"2026-10-18T01:08:38.067923765Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackAllowsAuthenticatedDecision/forge-coulomb-owners","Output":"--- PASS: TestAccessEngineActualCallbackAllowsAuthenticatedDecision/forge-coulomb-owners (0.01s)\n"}
{"Time":"2026-10-18T01:08:38.067970564Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackAllowsAuthenticatedDecision/forge-coulomb-owners","Elapsed":0.01}
{"Time":"2026-10-18T01:08:38.068057013Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackAllowsAuthenticatedDecision/forge-coulomb-readers"}
{"Time":"2026-10-18T01:08:38.068067193Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackAllowsAuthenticatedDecision/forge-coulomb-readers","Output":"=== RUN TestAccessEngineActualCallbackAllowsAuthenticatedDecision/forge-coulomb-readers\n"}
{"Time":"2026-10-18T01:08:38.076490055Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackAllowsAuthenticatedDecision/forge-coulomb-readers","Output":"--- PASS: TestAccessEngineActualCallbackAllowsAuthenticatedDecision/forge-coulomb-readers (0.01s)\n"}
{"Time":"2026-10-18T01:08:38.076544438Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackAllowsAuthenticatedDecision/forge-coulomb-readers","Elapsed":0.01}
{"Time":"2026-10-18T01:08:38.076556359Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackAllowsAuthenticatedDecision","Output":"--- PASS: TestAccessEngineActualCallbackAllowsAuthenticatedDecision (0.03s)\n"}
{"Time":"2026-10-18T01:08:38.076562022Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackAllowsAuthenticatedDecision","Elapsed":0.03}
{"Time":"2026-10-18T01:08:38.076567946Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackRefusesUnverifiedPDP"}
{"Time":"2026-10-18T01:08:38.076572797Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackRefusesUnverifiedPDP","Output":"=== RUN TestAccessEngineActualCallbackRefusesUnverifiedPDP\n"}
{"Time":"2026-10-18T01:08:38.07659654Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackRefusesUnverifiedPDP/deny"}
{"Time":"2026-10-18T01:08:38.076602807Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackRefusesUnverifiedPDP/deny","Output":"=== RUN TestAccessEngineActualCallbackRefusesUnverifiedPDP/deny\n"}
{"Time":"2026-10-18T01:08:38.083463046Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackRefusesUnverifiedPDP/deny","Output":"--- PASS: TestAccessEngineActualCallbackRefusesUnverifiedPDP/deny (0.01s)\n"}
{"Time":"2026-10-18T01:08:38.083516031Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackRefusesUnverifiedPDP/deny","Elapsed":0.01}
{"Time":"2026-10-18T01:08:38.083524084Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackRefusesUnverifiedPDP/unsigned"}
{"Time":"2026-10-18T01:08:38.083528178Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackRefusesUnverifiedPDP/unsigned","Output":"=== RUN TestAccessEngineActualCallbackRefusesUnverifiedPDP/unsigned\n"}
{"Time":"2026-10-18T01:08:38.090174922Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackRefusesUnverifiedPDP/unsigned","Output":"--- PASS: TestAccessEngineActualCallbackRefusesUnverifiedPDP/unsigned (0.01s)\n"}
{"Time":"2026-10-18T01:08:38.090227925Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackRefusesUnverifiedPDP/unsigned","Elapsed":0.01}
{"Time":"2026-10-18T01:08:38.090242686Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackRefusesUnverifiedPDP/wrong-key"}
{"Time":"2026-10-18T01:08:38.090247312Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackRefusesUnverifiedPDP/wrong-key","Output":"=== RUN TestAccessEngineActualCallbackRefusesUnverifiedPDP/wrong-key\n"}
{"Time":"2026-10-18T01:08:38.097754175Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackRefusesUnverifiedPDP/wrong-key","Output":"--- PASS: TestAccessEngineActualCallbackRefusesUnverifiedPDP/wrong-key (0.01s)\n"}
{"Time":"2026-10-18T01:08:38.097804672Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackRefusesUnverifiedPDP/wrong-key","Elapsed":0.01}
{"Time":"2026-10-18T01:08:38.097812778Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackRefusesUnverifiedPDP/wrong-pin"}
{"Time":"2026-10-18T01:08:38.097817638Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackRefusesUnverifiedPDP/wrong-pin","Output":"=== RUN TestAccessEngineActualCallbackRefusesUnverifiedPDP/wrong-pin\n"}
{"Time":"2026-10-18T01:08:38.105249939Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackRefusesUnverifiedPDP/wrong-pin","Output":"--- PASS: TestAccessEngineActualCallbackRefusesUnverifiedPDP/wrong-pin (0.01s)\n"}
{"Time":"2026-10-18T01:08:38.105298993Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackRefusesUnverifiedPDP/wrong-pin","Elapsed":0.01}
{"Time":"2026-10-18T01:08:38.105308101Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackRefusesUnverifiedPDP/wrong-binding"}
{"Time":"2026-10-18T01:08:38.105313502Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackRefusesUnverifiedPDP/wrong-binding","Output":"=== RUN TestAccessEngineActualCallbackRefusesUnverifiedPDP/wrong-binding\n"}
{"Time":"2026-10-18T01:08:38.112656204Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackRefusesUnverifiedPDP/wrong-binding","Output":"--- PASS: TestAccessEngineActualCallbackRefusesUnverifiedPDP/wrong-binding (0.01s)\n"}
{"Time":"2026-10-18T01:08:38.112702697Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackRefusesUnverifiedPDP/wrong-binding","Elapsed":0.01}
{"Time":"2026-10-18T01:08:38.112711795Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackRefusesUnverifiedPDP/expired"}
{"Time":"2026-10-18T01:08:38.112717593Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackRefusesUnverifiedPDP/expired","Output":"=== RUN TestAccessEngineActualCallbackRefusesUnverifiedPDP/expired\n"}
{"Time":"2026-10-18T01:08:38.12088967Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackRefusesUnverifiedPDP/expired","Output":"--- PASS: TestAccessEngineActualCallbackRefusesUnverifiedPDP/expired (0.01s)\n"}
{"Time":"2026-10-18T01:08:38.120933746Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackRefusesUnverifiedPDP/expired","Elapsed":0.01}
{"Time":"2026-10-18T01:08:38.120942799Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackRefusesUnverifiedPDP","Output":"--- PASS: TestAccessEngineActualCallbackRefusesUnverifiedPDP (0.04s)\n"}
{"Time":"2026-10-18T01:08:38.120948552Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackRefusesUnverifiedPDP","Elapsed":0.04}
{"Time":"2026-10-18T01:08:38.120956181Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP"}
{"Time":"2026-10-18T01:08:38.120961077Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP","Output":"=== RUN TestAccessEngineActualCallbackChecksIdentityBeforePDP\n"}
{"Time":"2026-10-18T01:08:38.120965703Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP/missing-groups"}
{"Time":"2026-10-18T01:08:38.120969599Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP/missing-groups","Output":"=== RUN TestAccessEngineActualCallbackChecksIdentityBeforePDP/missing-groups\n"}
{"Time":"2026-10-18T01:08:38.123261541Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP/missing-groups","Output":"--- PASS: TestAccessEngineActualCallbackChecksIdentityBeforePDP/missing-groups (0.00s)\n"}
{"Time":"2026-10-18T01:08:38.123328647Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP/missing-groups","Elapsed":0}
{"Time":"2026-10-18T01:08:38.123346096Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP/wrong-source"}
{"Time":"2026-10-18T01:08:38.123354527Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP/wrong-source","Output":"=== RUN TestAccessEngineActualCallbackChecksIdentityBeforePDP/wrong-source\n"}
{"Time":"2026-10-18T01:08:38.125041159Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP/wrong-source","Output":"--- PASS: TestAccessEngineActualCallbackChecksIdentityBeforePDP/wrong-source (0.00s)\n"}
{"Time":"2026-10-18T01:08:38.12509896Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP/wrong-source","Elapsed":0}
{"Time":"2026-10-18T01:08:38.12513016Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP/wrong-provider"}
{"Time":"2026-10-18T01:08:38.125138708Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP/wrong-provider","Output":"=== RUN TestAccessEngineActualCallbackChecksIdentityBeforePDP/wrong-provider\n"}
{"Time":"2026-10-18T01:08:38.127340985Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP/wrong-provider","Output":"--- PASS: TestAccessEngineActualCallbackChecksIdentityBeforePDP/wrong-provider (0.00s)\n"}
{"Time":"2026-10-18T01:08:38.127380273Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP/wrong-provider","Elapsed":0}
{"Time":"2026-10-18T01:08:38.12738893Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP/wrong-audience"}
{"Time":"2026-10-18T01:08:38.127394475Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP/wrong-audience","Output":"=== RUN TestAccessEngineActualCallbackChecksIdentityBeforePDP/wrong-audience\n"}
{"Time":"2026-10-18T01:08:38.129019429Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP/wrong-audience","Output":"--- PASS: TestAccessEngineActualCallbackChecksIdentityBeforePDP/wrong-audience (0.00s)\n"}
{"Time":"2026-10-18T01:08:38.129064686Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP/wrong-audience","Elapsed":0}
{"Time":"2026-10-18T01:08:38.129071666Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP/missing-admission"}
{"Time":"2026-10-18T01:08:38.129076183Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP/missing-admission","Output":"=== RUN TestAccessEngineActualCallbackChecksIdentityBeforePDP/missing-admission\n"}
{"Time":"2026-10-18T01:08:38.130278038Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP/missing-admission","Output":"--- PASS: TestAccessEngineActualCallbackChecksIdentityBeforePDP/missing-admission (0.00s)\n"}
{"Time":"2026-10-18T01:08:38.130306551Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP/missing-admission","Elapsed":0}
{"Time":"2026-10-18T01:08:38.130313539Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP/untrusted-identity"}
{"Time":"2026-10-18T01:08:38.130317985Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP/untrusted-identity","Output":"=== RUN TestAccessEngineActualCallbackChecksIdentityBeforePDP/untrusted-identity\n"}
{"Time":"2026-10-18T01:08:38.13139377Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP/untrusted-identity","Output":"--- PASS: TestAccessEngineActualCallbackChecksIdentityBeforePDP/untrusted-identity (0.00s)\n"}
{"Time":"2026-10-18T01:08:38.131428315Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP/untrusted-identity","Elapsed":0}
{"Time":"2026-10-18T01:08:38.131436575Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP/missing-token"}
{"Time":"2026-10-18T01:08:38.131453157Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP/missing-token","Output":"=== RUN TestAccessEngineActualCallbackChecksIdentityBeforePDP/missing-token\n"}
{"Time":"2026-10-18T01:08:38.13267415Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP/missing-token","Output":"--- PASS: TestAccessEngineActualCallbackChecksIdentityBeforePDP/missing-token (0.00s)\n"}
{"Time":"2026-10-18T01:08:38.132719588Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP/missing-token","Elapsed":0}
{"Time":"2026-10-18T01:08:38.132727072Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP/mismatched-user"}
{"Time":"2026-10-18T01:08:38.132731752Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP/mismatched-user","Output":"=== RUN TestAccessEngineActualCallbackChecksIdentityBeforePDP/mismatched-user\n"}
{"Time":"2026-10-18T01:08:38.13405843Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP/mismatched-user","Output":"--- PASS: TestAccessEngineActualCallbackChecksIdentityBeforePDP/mismatched-user (0.00s)\n"}
{"Time":"2026-10-18T01:08:38.134105735Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP/mismatched-user","Elapsed":0}
{"Time":"2026-10-18T01:08:38.134123129Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP/mismatched-subject"}
{"Time":"2026-10-18T01:08:38.134127827Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP/mismatched-subject","Output":"=== RUN TestAccessEngineActualCallbackChecksIdentityBeforePDP/mismatched-subject\n"}
{"Time":"2026-10-18T01:08:38.135942521Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP/mismatched-subject","Output":"--- PASS: TestAccessEngineActualCallbackChecksIdentityBeforePDP/mismatched-subject (0.00s)\n"}
{"Time":"2026-10-18T01:08:38.136077104Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP/mismatched-subject","Elapsed":0}
{"Time":"2026-10-18T01:08:38.136086707Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP/expired-token"}
{"Time":"2026-10-18T01:08:38.136122623Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP/expired-token","Output":"=== RUN TestAccessEngineActualCallbackChecksIdentityBeforePDP/expired-token\n"}
{"Time":"2026-10-18T01:08:38.13805575Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP/expired-token","Output":"--- PASS: TestAccessEngineActualCallbackChecksIdentityBeforePDP/expired-token (0.00s)\n"}
{"Time":"2026-10-18T01:08:38.13809997Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP/expired-token","Elapsed":0}
{"Time":"2026-10-18T01:08:38.138116887Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP","Output":"--- PASS: TestAccessEngineActualCallbackChecksIdentityBeforePDP (0.02s)\n"}
{"Time":"2026-10-18T01:08:38.138122198Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP","Elapsed":0.02}
{"Time":"2026-10-18T01:08:38.138143443Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE"}
{"Time":"2026-10-18T01:08:38.138150224Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE","Output":"=== RUN TestVerifiedApplicationIdentityActualJOSE\n"}
{"Time":"2026-10-18T01:08:38.138630933Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/empty-subject"}
{"Time":"2026-10-18T01:08:38.138647218Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/empty-subject","Output":"=== RUN TestVerifiedApplicationIdentityActualJOSE/empty-subject\n"}
{"Time":"2026-10-18T01:08:38.139089192Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/empty-subject","Output":"--- PASS: TestVerifiedApplicationIdentityActualJOSE/empty-subject (0.00s)\n"}
{"Time":"2026-10-18T01:08:38.139124846Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/empty-subject","Elapsed":0}
{"Time":"2026-10-18T01:08:38.139141573Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/expired"}
{"Time":"2026-10-18T01:08:38.139150483Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/expired","Output":"=== RUN TestVerifiedApplicationIdentityActualJOSE/expired\n"}
{"Time":"2026-10-18T01:08:38.139639224Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/expired","Output":"--- PASS: TestVerifiedApplicationIdentityActualJOSE/expired (0.00s)\n"}
{"Time":"2026-10-18T01:08:38.139675113Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/expired","Elapsed":0}
{"Time":"2026-10-18T01:08:38.139685771Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/future-issued"}
{"Time":"2026-10-18T01:08:38.139691226Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/future-issued","Output":"=== RUN TestVerifiedApplicationIdentityActualJOSE/future-issued\n"}
{"Time":"2026-10-18T01:08:38.140187391Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/future-issued","Output":"--- PASS: TestVerifiedApplicationIdentityActualJOSE/future-issued (0.00s)\n"}
{"Time":"2026-10-18T01:08:38.140250999Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/future-issued","Elapsed":0}
{"Time":"2026-10-18T01:08:38.140263966Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/old-issued"}
{"Time":"2026-10-18T01:08:38.140269475Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/old-issued","Output":"=== RUN TestVerifiedApplicationIdentityActualJOSE/old-issued\n"}
{"Time":"2026-10-18T01:08:38.140753837Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/old-issued","Output":"--- PASS: TestVerifiedApplicationIdentityActualJOSE/old-issued (0.00s)\n"}
{"Time":"2026-10-18T01:08:38.14078501Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/old-issued","Elapsed":0}
{"Time":"2026-10-18T01:08:38.140794694Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/no-principal"}
{"Time":"2026-10-18T01:08:38.140818545Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/no-principal","Output":"=== RUN TestVerifiedApplicationIdentityActualJOSE/no-principal\n"}
{"Time":"2026-10-18T01:08:38.141227324Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/no-principal","Output":"--- PASS: TestVerifiedApplicationIdentityActualJOSE/no-principal (0.00s)\n"}
{"Time":"2026-10-18T01:08:38.141247351Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/no-principal","Elapsed":0}
{"Time":"2026-10-18T01:08:38.141256494Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/issuer"}
{"Time":"2026-10-18T01:08:38.14126121Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/issuer","Output":"=== RUN TestVerifiedApplicationIdentityActualJOSE/issuer\n"}
{"Time":"2026-10-18T01:08:38.14175302Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/issuer","Output":"--- PASS: TestVerifiedApplicationIdentityActualJOSE/issuer (0.00s)\n"}
{"Time":"2026-10-18T01:08:38.141777358Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/issuer","Elapsed":0}
{"Time":"2026-10-18T01:08:38.141786988Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/audience"}
{"Time":"2026-10-18T01:08:38.141792065Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/audience","Output":"=== RUN TestVerifiedApplicationIdentityActualJOSE/audience\n"}
{"Time":"2026-10-18T01:08:38.142257129Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/audience","Output":"--- PASS: TestVerifiedApplicationIdentityActualJOSE/audience (0.00s)\n"}
{"Time":"2026-10-18T01:08:38.142284181Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/audience","Elapsed":0}
{"Time":"2026-10-18T01:08:38.142293893Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/no-exp"}
{"Time":"2026-10-18T01:08:38.142301422Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/no-exp","Output":"=== RUN TestVerifiedApplicationIdentityActualJOSE/no-exp\n"}
{"Time":"2026-10-18T01:08:38.142974782Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/no-exp","Output":"--- PASS: TestVerifiedApplicationIdentityActualJOSE/no-exp (0.00s)\n"}
{"Time":"2026-10-18T01:08:38.14301747Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/no-exp","Elapsed":0}
{"Time":"2026-10-18T01:08:38.143027957Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/no-iat"}
{"Time":"2026-10-18T01:08:38.143032096Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/no-iat","Output":"=== RUN TestVerifiedApplicationIdentityActualJOSE/no-iat\n"}
{"Time":"2026-10-18T01:08:38.143567621Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/no-iat","Output":"--- PASS: TestVerifiedApplicationIdentityActualJOSE/no-iat (0.00s)\n"}
{"Time":"2026-10-18T01:08:38.143613519Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/no-iat","Elapsed":0}
{"Time":"2026-10-18T01:08:38.143665495Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/no-tenant"}
{"Time":"2026-10-18T01:08:38.143682104Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/no-tenant","Output":"=== RUN TestVerifiedApplicationIdentityActualJOSE/no-tenant\n"}
{"Time":"2026-10-18T01:08:38.144339272Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/no-tenant","Output":"--- PASS: TestVerifiedApplicationIdentityActualJOSE/no-tenant (0.00s)\n"}
{"Time":"2026-10-18T01:08:38.14438893Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/no-tenant","Elapsed":0}
{"Time":"2026-10-18T01:08:38.144404693Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/no-assurance"}
{"Time":"2026-10-18T01:08:38.144409968Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/no-assurance","Output":"=== RUN TestVerifiedApplicationIdentityActualJOSE/no-assurance\n"}
{"Time":"2026-10-18T01:08:38.145033278Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/no-assurance","Output":"--- PASS: TestVerifiedApplicationIdentityActualJOSE/no-assurance (0.00s)\n"}
{"Time":"2026-10-18T01:08:38.145075524Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/no-assurance","Elapsed":0}
{"Time":"2026-10-18T01:08:38.145091052Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/multi-audience-no-azp"}
{"Time":"2026-10-18T01:08:38.14510061Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/multi-audience-no-azp","Output":"=== RUN TestVerifiedApplicationIdentityActualJOSE/multi-audience-no-azp\n"}
{"Time":"2026-10-18T01:08:38.145490465Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/multi-audience-no-azp","Output":"--- PASS: TestVerifiedApplicationIdentityActualJOSE/multi-audience-no-azp (0.00s)\n"}
{"Time":"2026-10-18T01:08:38.145520294Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/multi-audience-no-azp","Elapsed":0}
{"Time":"2026-10-18T01:08:38.145527742Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/wrong-key"}
{"Time":"2026-10-18T01:08:38.14553813Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/wrong-key","Output":"=== RUN TestVerifiedApplicationIdentityActualJOSE/wrong-key\n"}
{"Time":"2026-10-18T01:08:38.145833517Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/wrong-key","Output":"--- PASS: TestVerifiedApplicationIdentityActualJOSE/wrong-key (0.00s)\n"}
{"Time":"2026-10-18T01:08:38.145853364Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/wrong-key","Elapsed":0}
{"Time":"2026-10-18T01:08:38.145865032Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/unknown-key"}
{"Time":"2026-10-18T01:08:38.145877476Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/unknown-key","Output":"=== RUN TestVerifiedApplicationIdentityActualJOSE/unknown-key\n"}
{"Time":"2026-10-18T01:08:38.14606701Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/unknown-key","Output":"--- PASS: TestVerifiedApplicationIdentityActualJOSE/unknown-key (0.00s)\n"}
{"Time":"2026-10-18T01:08:38.14610426Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/unknown-key","Elapsed":0}
{"Time":"2026-10-18T01:08:38.146110707Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/wrong-type"}
{"Time":"2026-10-18T01:08:38.146115171Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/wrong-type","Output":"=== RUN TestVerifiedApplicationIdentityActualJOSE/wrong-type\n"}
{"Time":"2026-10-18T01:08:38.146244631Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/wrong-type","Output":"--- PASS: TestVerifiedApplicationIdentityActualJOSE/wrong-type (0.00s)\n"}
{"Time":"2026-10-18T01:08:38.146272882Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/wrong-type","Elapsed":0}
{"Time":"2026-10-18T01:08:38.146282342Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/algorithm-confusion"}
{"Time":"2026-10-18T01:08:38.14628703Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/algorithm-confusion","Output":"=== RUN TestVerifiedApplicationIdentityActualJOSE/algorithm-confusion\n"}
{"Time":"2026-10-18T01:08:38.146428322Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/algorithm-confusion","Output":"--- PASS: TestVerifiedApplicationIdentityActualJOSE/algorithm-confusion (0.00s)\n"}
{"Time":"2026-10-18T01:08:38.146451262Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/algorithm-confusion","Elapsed":0}
{"Time":"2026-10-18T01:08:38.146459134Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/none"}
{"Time":"2026-10-18T01:08:38.146463435Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/none","Output":"=== RUN TestVerifiedApplicationIdentityActualJOSE/none\n"}
{"Time":"2026-10-18T01:08:38.146472804Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/none","Output":"--- PASS: TestVerifiedApplicationIdentityActualJOSE/none (0.00s)\n"}
{"Time":"2026-10-18T01:08:38.146517061Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/none","Elapsed":0}
{"Time":"2026-10-18T01:08:38.146537863Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE","Output":"--- PASS: TestVerifiedApplicationIdentityActualJOSE (0.01s)\n"}
{"Time":"2026-10-18T01:08:38.146548747Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE","Elapsed":0.01}
{"Time":"2026-10-18T01:08:38.146631282Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestRequiredClaimExactAnyOfAndNoMutation"}
{"Time":"2026-10-18T01:08:38.146644321Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestRequiredClaimExactAnyOfAndNoMutation","Output":"=== RUN TestRequiredClaimExactAnyOfAndNoMutation\n"}
{"Time":"2026-10-18T01:08:38.146744863Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestRequiredClaimExactAnyOfAndNoMutation","Output":"--- PASS: TestRequiredClaimExactAnyOfAndNoMutation (0.00s)\n"}
{"Time":"2026-10-18T01:08:38.146764431Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestRequiredClaimExactAnyOfAndNoMutation","Elapsed":0}
{"Time":"2026-10-18T01:08:38.146803809Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestRequiredClaimConfigurationRefusalsAndLegacyIsolation"}
{"Time":"2026-10-18T01:08:38.146816208Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestRequiredClaimConfigurationRefusalsAndLegacyIsolation","Output":"=== RUN TestRequiredClaimConfigurationRefusalsAndLegacyIsolation\n"}
{"Time":"2026-10-18T01:08:38.146828444Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestRequiredClaimConfigurationRefusalsAndLegacyIsolation","Output":"--- PASS: TestRequiredClaimConfigurationRefusalsAndLegacyIsolation (0.00s)\n"}
{"Time":"2026-10-18T01:08:38.146835748Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestRequiredClaimConfigurationRefusalsAndLegacyIsolation","Elapsed":0}
{"Time":"2026-10-18T01:08:38.146854883Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestCurrentUserInfoGuardRejectsMissingMalformedAndUnavailable"}
{"Time":"2026-10-18T01:08:38.146861393Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestCurrentUserInfoGuardRejectsMissingMalformedAndUnavailable","Output":"=== RUN TestCurrentUserInfoGuardRejectsMissingMalformedAndUnavailable\n"}
{"Time":"2026-10-18T01:08:38.151405928Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestCurrentUserInfoGuardRejectsMissingMalformedAndUnavailable","Output":"--- PASS: TestCurrentUserInfoGuardRejectsMissingMalformedAndUnavailable (0.00s)\n"}
{"Time":"2026-10-18T01:08:38.15147482Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestCurrentUserInfoGuardRejectsMissingMalformedAndUnavailable","Elapsed":0}
{"Time":"2026-10-18T01:08:38.151489392Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestCurrentUserInfoEmptyArrayOverwritesAndGroupRemoval"}
{"Time":"2026-10-18T01:08:38.151495731Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestCurrentUserInfoEmptyArrayOverwritesAndGroupRemoval","Output":"=== RUN TestCurrentUserInfoEmptyArrayOverwritesAndGroupRemoval\n"}
{"Time":"2026-10-18T01:08:38.151511701Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestCurrentUserInfoEmptyArrayOverwritesAndGroupRemoval","Output":"--- PASS: TestCurrentUserInfoEmptyArrayOverwritesAndGroupRemoval (0.00s)\n"}
{"Time":"2026-10-18T01:08:38.151535578Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestCurrentUserInfoEmptyArrayOverwritesAndGroupRemoval","Elapsed":0}
{"Time":"2026-10-18T01:08:38.151548581Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestCurrentUserInfoGuardIsOptInAndRedirectsRefuse"}
{"Time":"2026-10-18T01:08:38.151556183Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestCurrentUserInfoGuardIsOptInAndRedirectsRefuse","Output":"=== RUN TestCurrentUserInfoGuardIsOptInAndRedirectsRefuse\n"}
{"Time":"2026-10-18T01:08:38.151579925Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestCurrentUserInfoGuardIsOptInAndRedirectsRefuse","Output":"--- PASS: TestCurrentUserInfoGuardIsOptInAndRedirectsRefuse (0.00s)\n"}
{"Time":"2026-10-18T01:08:38.151600908Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestCurrentUserInfoGuardIsOptInAndRedirectsRefuse","Elapsed":0}
{"Time":"2026-10-18T01:08:38.151642234Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Output":"PASS\n"}
{"Time":"2026-10-18T01:08:38.161114359Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Output":"ok \tforgejo.org/services/auth/source/oauth2\t0.218s\n"}
{"Time":"2026-10-18T01:08:38.161169977Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Elapsed":0.219}
{"Time":"2026-10-18T01:09:36.44937704Z","Action":"start","Package":"forgejo.org/cmd"}
{"Time":"2026-10-18T01:09:36.72251156Z","Action":"output","Package":"forgejo.org/cmd","Output":"2026/10/18 01:09:36 ...s/storage/storage.go:157:initAttachments() [I] Initialising Attachment storage with type: local\n"}
{"Time":"2026-10-18T01:09:36.722695863Z","Action":"output","Package":"forgejo.org/cmd","Output":"2026/10/18 01:09:36 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata1279375576/attachments\n"}
{"Time":"2026-10-18T01:09:36.722765837Z","Action":"output","Package":"forgejo.org/cmd","Output":"2026/10/18 01:09:36 ...s/storage/storage.go:147:initAvatars() [I] Initialising Avatar storage with type: local\n"}
{"Time":"2026-10-18T01:09:36.72278141Z","Action":"output","Package":"forgejo.org/cmd","Output":"2026/10/18 01:09:36 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata1279375576/avatars\n"}
{"Time":"2026-10-18T01:09:36.722791194Z","Action":"output","Package":"forgejo.org/cmd","Output":"2026/10/18 01:09:36 ...s/storage/storage.go:173:initRepoAvatars() [I] Initialising Repository Avatar storage with type: local\n"}
{"Time":"2026-10-18T01:09:36.72279884Z","Action":"output","Package":"forgejo.org/cmd","Output":"2026/10/18 01:09:36 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata1279375576/repo-avatars\n"}
{"Time":"2026-10-18T01:09:36.722806451Z","Action":"output","Package":"forgejo.org/cmd","Output":"2026/10/18 01:09:36 ...s/storage/storage.go:179:initRepoArchives() [I] Initialising Repository Archive storage with type: local\n"}
{"Time":"2026-10-18T01:09:36.722813638Z","Action":"output","Package":"forgejo.org/cmd","Output":"2026/10/18 01:09:36 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata1279375576/repo-archive\n"}
{"Time":"2026-10-18T01:09:36.72282096Z","Action":"output","Package":"forgejo.org/cmd","Output":"2026/10/18 01:09:36 ...s/storage/storage.go:189:initPackages() [I] Initialising Packages storage with type: local\n"}
{"Time":"2026-10-18T01:09:36.722827876Z","Action":"output","Package":"forgejo.org/cmd","Output":"2026/10/18 01:09:36 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata1279375576/packages\n"}
{"Time":"2026-10-18T01:09:36.722846578Z","Action":"output","Package":"forgejo.org/cmd","Output":"2026/10/18 01:09:36 ...s/storage/storage.go:200:initActions() [I] Initialising Actions storage with type: local\n"}
{"Time":"2026-10-18T01:09:36.722854179Z","Action":"output","Package":"forgejo.org/cmd","Output":"2026/10/18 01:09:36 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata1279375576/actions_log\n"}
{"Time":"2026-10-18T01:09:36.722861168Z","Action":"output","Package":"forgejo.org/cmd","Output":"2026/10/18 01:09:36 ...s/storage/storage.go:204:initActions() [I] Initialising ActionsArtifacts storage with type: local\n"}
{"Time":"2026-10-18T01:09:36.722867985Z","Action":"output","Package":"forgejo.org/cmd","Output":"2026/10/18 01:09:36 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/go-build2012268276/b1034/data/actions_artifacts\n"}
{"Time":"2026-10-18T01:09:36.933855782Z","Action":"run","Package":"forgejo.org/cmd","Test":"TestPrivateSecretMetadata"}
{"Time":"2026-10-18T01:09:36.93390342Z","Action":"output","Package":"forgejo.org/cmd","Test":"TestPrivateSecretMetadata","Output":"=== RUN TestPrivateSecretMetadata\n"}
{"Time":"2026-10-18T01:09:36.933918659Z","Action":"output","Package":"forgejo.org/cmd","Test":"TestPrivateSecretMetadata","Output":"--- PASS: TestPrivateSecretMetadata (0.00s)\n"}
{"Time":"2026-10-18T01:09:36.933933474Z","Action":"pass","Package":"forgejo.org/cmd","Test":"TestPrivateSecretMetadata","Elapsed":0}
{"Time":"2026-10-18T01:09:36.934066785Z","Action":"run","Package":"forgejo.org/cmd","Test":"TestPrivateSecretOpenedFileReplacement"}
{"Time":"2026-10-18T01:09:36.934079148Z","Action":"output","Package":"forgejo.org/cmd","Test":"TestPrivateSecretOpenedFileReplacement","Output":"=== RUN TestPrivateSecretOpenedFileReplacement\n"}
{"Time":"2026-10-18T01:09:36.93684219Z","Action":"output","Package":"forgejo.org/cmd","Test":"TestPrivateSecretOpenedFileReplacement","Output":" admin_auth_oauth_secret_linux_test.go:74: rename /run/writable-input/race-replacement /run/writable-input/race: no such file or directory\n"}
{"Time":"2026-10-18T01:09:36.936927006Z","Action":"output","Package":"forgejo.org/cmd","Test":"TestPrivateSecretOpenedFileReplacement","Output":"--- FAIL: TestPrivateSecretOpenedFileReplacement (0.00s)\n"}
{"Time":"2026-10-18T01:09:36.936948233Z","Action":"fail","Package":"forgejo.org/cmd","Test":"TestPrivateSecretOpenedFileReplacement","Elapsed":0}
{"Time":"2026-10-18T01:09:36.937533425Z","Action":"output","Package":"forgejo.org/cmd","Output":"FAIL\n"}
{"Time":"2026-10-18T01:09:36.978993641Z","Action":"output","Package":"forgejo.org/cmd","Output":"FAIL\tforgejo.org/cmd\t0.529s\n"}
{"Time":"2026-10-18T01:09:36.979049521Z","Action":"fail","Package":"forgejo.org/cmd","Elapsed":0.53}
{"Time":"2026-10-18T01:09:59.109713139Z","Action":"start","Package":"forgejo.org/models/auth"}
{"Time":"2026-10-18T01:09:59.339505364Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:09:59 ...s/storage/storage.go:157:initAttachments() [I] Initialising Attachment storage with type: local\n"}
{"Time":"2026-10-18T01:09:59.339577069Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:09:59 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata1964458793/attachments\n"}
{"Time":"2026-10-18T01:09:59.339586744Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:09:59 ...s/storage/storage.go:147:initAvatars() [I] Initialising Avatar storage with type: local\n"}
{"Time":"2026-10-18T01:09:59.339596014Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:09:59 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata1964458793/avatars\n"}
{"Time":"2026-10-18T01:09:59.339604157Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:09:59 ...s/storage/storage.go:173:initRepoAvatars() [I] Initialising Repository Avatar storage with type: local\n"}
{"Time":"2026-10-18T01:09:59.339612092Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:09:59 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata1964458793/repo-avatars\n"}
{"Time":"2026-10-18T01:09:59.339619838Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:09:59 ...s/storage/storage.go:179:initRepoArchives() [I] Initialising Repository Archive storage with type: local\n"}
{"Time":"2026-10-18T01:09:59.339627674Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:09:59 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata1964458793/repo-archive\n"}
{"Time":"2026-10-18T01:09:59.339635888Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:09:59 ...s/storage/storage.go:189:initPackages() [I] Initialising Packages storage with type: local\n"}
{"Time":"2026-10-18T01:09:59.339643724Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:09:59 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata1964458793/packages\n"}
{"Time":"2026-10-18T01:09:59.339651398Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:09:59 ...s/storage/storage.go:200:initActions() [I] Initialising Actions storage with type: local\n"}
{"Time":"2026-10-18T01:09:59.339659099Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:09:59 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata1964458793/actions_log\n"}
{"Time":"2026-10-18T01:09:59.33970093Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:09:59 ...s/storage/storage.go:204:initActions() [I] Initialising ActionsArtifacts storage with type: local\n"}
{"Time":"2026-10-18T01:09:59.339723843Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:09:59 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/go-build2012268276/b1314/data/actions_artifacts\n"}
{"Time":"2026-10-18T01:09:59.492752156Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationDatabaseWriterExclusion"}
{"Time":"2026-10-18T01:09:59.492810335Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationDatabaseWriterExclusion","Output":"=== RUN TestSourceOperationDatabaseWriterExclusion\n"}
{"Time":"2026-10-18T01:09:59.594543385Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationDatabaseWriterExclusion","Output":"--- PASS: TestSourceOperationDatabaseWriterExclusion (0.10s)\n"}
{"Time":"2026-10-18T01:09:59.594628435Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationDatabaseWriterExclusion","Elapsed":0.1}
{"Time":"2026-10-18T01:09:59.594650473Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationRefusesActualXORMArgumentLogging"}
{"Time":"2026-10-18T01:09:59.594656226Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationRefusesActualXORMArgumentLogging","Output":"=== RUN TestSourceOperationRefusesActualXORMArgumentLogging\n"}
{"Time":"2026-10-18T01:09:59.594911618Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationRefusesActualXORMArgumentLogging","Output":"[xorm] [info] 2026/10/18 01:09:59.594763 [SQL] BEGIN TRANSACTION [] - 150.209µs\n"}
{"Time":"2026-10-18T01:09:59.594942088Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationRefusesActualXORMArgumentLogging","Output":"[xorm] [info] 2026/10/18 01:09:59.594857 [SQL] ROLLBACK [] - 25.772µs\n"}
{"Time":"2026-10-18T01:09:59.594963531Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationRefusesActualXORMArgumentLogging","Output":"--- PASS: TestSourceOperationRefusesActualXORMArgumentLogging (0.00s)\n"}
{"Time":"2026-10-18T01:09:59.59497822Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationRefusesActualXORMArgumentLogging","Elapsed":0}
{"Time":"2026-10-18T01:09:59.597123297Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationProcessRecovery"}
{"Time":"2026-10-18T01:09:59.597176156Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationProcessRecovery","Output":"=== RUN TestSourceOperationProcessRecovery\n"}
{"Time":"2026-10-18T01:10:02.249743726Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationProcessRecovery","Output":"--- PASS: TestSourceOperationProcessRecovery (2.65s)\n"}
{"Time":"2026-10-18T01:10:02.249844818Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationProcessRecovery","Elapsed":2.65}
{"Time":"2026-10-18T01:10:02.249877542Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationCreateAndInverse"}
{"Time":"2026-10-18T01:10:02.249895423Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationCreateAndInverse","Output":"=== RUN TestSourceOperationCreateAndInverse\n"}
{"Time":"2026-10-18T01:10:02.279279803Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationCreateAndInverse","Output":"--- PASS: TestSourceOperationCreateAndInverse (0.03s)\n"}
{"Time":"2026-10-18T01:10:02.279363177Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationCreateAndInverse","Elapsed":0.03}
{"Time":"2026-10-18T01:10:02.27938067Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationRestoresExactRawPreexisting"}
{"Time":"2026-10-18T01:10:02.279388479Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationRestoresExactRawPreexisting","Output":"=== RUN TestSourceOperationRestoresExactRawPreexisting\n"}
{"Time":"2026-10-18T01:10:02.301909786Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationRestoresExactRawPreexisting","Output":"--- PASS: TestSourceOperationRestoresExactRawPreexisting (0.02s)\n"}
{"Time":"2026-10-18T01:10:02.30197086Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationRestoresExactRawPreexisting","Elapsed":0.02}
{"Time":"2026-10-18T01:10:02.301988894Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationUnchangedNeverDeletesPreexisting"}
{"Time":"2026-10-18T01:10:02.301997127Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationUnchangedNeverDeletesPreexisting","Output":"=== RUN TestSourceOperationUnchangedNeverDeletesPreexisting\n"}
{"Time":"2026-10-18T01:10:02.333928333Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationUnchangedNeverDeletesPreexisting","Output":"--- PASS: TestSourceOperationUnchangedNeverDeletesPreexisting (0.03s)\n"}
{"Time":"2026-10-18T01:10:02.333974736Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationUnchangedNeverDeletesPreexisting","Elapsed":0.03}
{"Time":"2026-10-18T01:10:02.333988235Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPrivateDriftRefuses"}
{"Time":"2026-10-18T01:10:02.33399461Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPrivateDriftRefuses","Output":"=== RUN TestSourceOperationPrivateDriftRefuses\n"}
{"Time":"2026-10-18T01:10:02.334242557Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPrivateDriftRefuses/before-apply"}
{"Time":"2026-10-18T01:10:02.334265416Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPrivateDriftRefuses/before-apply","Output":"=== RUN TestSourceOperationPrivateDriftRefuses/before-apply\n"}
{"Time":"2026-10-18T01:10:02.359245801Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPrivateDriftRefuses/before-apply","Output":"--- PASS: TestSourceOperationPrivateDriftRefuses/before-apply (0.02s)\n"}
{"Time":"2026-10-18T01:10:02.35930967Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPrivateDriftRefuses/before-apply","Elapsed":0.02}
{"Time":"2026-10-18T01:10:02.359333971Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPrivateDriftRefuses/before-inverse"}
{"Time":"2026-10-18T01:10:02.359353403Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPrivateDriftRefuses/before-inverse","Output":"=== RUN TestSourceOperationPrivateDriftRefuses/before-inverse\n"}
{"Time":"2026-10-18T01:10:02.387167083Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPrivateDriftRefuses/before-inverse","Output":"--- PASS: TestSourceOperationPrivateDriftRefuses/before-inverse (0.03s)\n"}
{"Time":"2026-10-18T01:10:02.387212133Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPrivateDriftRefuses/before-inverse","Elapsed":0.03}
{"Time":"2026-10-18T01:10:02.387223144Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPrivateDriftRefuses","Output":"--- PASS: TestSourceOperationPrivateDriftRefuses (0.05s)\n"}
{"Time":"2026-10-18T01:10:02.387230493Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPrivateDriftRefuses","Elapsed":0.05}
{"Time":"2026-10-18T01:10:02.387241241Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationStockCRUDDriftRefuses"}
{"Time":"2026-10-18T01:10:02.387247427Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationStockCRUDDriftRefuses","Output":"=== RUN TestSourceOperationStockCRUDDriftRefuses\n"}
{"Time":"2026-10-18T01:10:02.411254298Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationStockCRUDDriftRefuses","Output":"--- PASS: TestSourceOperationStockCRUDDriftRefuses (0.02s)\n"}
{"Time":"2026-10-18T01:10:02.411303532Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationStockCRUDDriftRefuses","Elapsed":0.02}
{"Time":"2026-10-18T01:10:02.411332261Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationLinkedSourceRefusesDeletion"}
{"Time":"2026-10-18T01:10:02.411338745Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationLinkedSourceRefusesDeletion","Output":"=== RUN TestSourceOperationLinkedSourceRefusesDeletion\n"}
{"Time":"2026-10-18T01:10:02.411353551Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationLinkedSourceRefusesDeletion/user"}
{"Time":"2026-10-18T01:10:02.411359024Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationLinkedSourceRefusesDeletion/user","Output":"=== RUN TestSourceOperationLinkedSourceRefusesDeletion/user\n"}
{"Time":"2026-10-18T01:10:02.435939087Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationLinkedSourceRefusesDeletion/user","Output":"--- PASS: TestSourceOperationLinkedSourceRefusesDeletion/user (0.02s)\n"}
{"Time":"2026-10-18T01:10:02.435988041Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationLinkedSourceRefusesDeletion/user","Elapsed":0.02}
{"Time":"2026-10-18T01:10:02.435998772Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationLinkedSourceRefusesDeletion/external"}
{"Time":"2026-10-18T01:10:02.436004624Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationLinkedSourceRefusesDeletion/external","Output":"=== RUN TestSourceOperationLinkedSourceRefusesDeletion/external\n"}
{"Time":"2026-10-18T01:10:02.459357759Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationLinkedSourceRefusesDeletion/external","Output":"--- PASS: TestSourceOperationLinkedSourceRefusesDeletion/external (0.02s)\n"}
{"Time":"2026-10-18T01:10:02.459418995Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationLinkedSourceRefusesDeletion/external","Elapsed":0.02}
{"Time":"2026-10-18T01:10:02.459434964Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationLinkedSourceRefusesDeletion","Output":"--- PASS: TestSourceOperationLinkedSourceRefusesDeletion (0.05s)\n"}
{"Time":"2026-10-18T01:10:02.459444117Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationLinkedSourceRefusesDeletion","Elapsed":0.05}
{"Time":"2026-10-18T01:10:02.459465876Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPreparedCancellationAndIDReuse"}
{"Time":"2026-10-18T01:10:02.459473946Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPreparedCancellationAndIDReuse","Output":"=== RUN TestSourceOperationPreparedCancellationAndIDReuse\n"}
{"Time":"2026-10-18T01:10:02.483978357Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPreparedCancellationAndIDReuse","Output":"--- PASS: TestSourceOperationPreparedCancellationAndIDReuse (0.02s)\n"}
{"Time":"2026-10-18T01:10:02.484030964Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPreparedCancellationAndIDReuse","Elapsed":0.02}
{"Time":"2026-10-18T01:10:02.4840455Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationRejectsUnsafeRuntime"}
{"Time":"2026-10-18T01:10:02.484053128Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationRejectsUnsafeRuntime","Output":"=== RUN TestSourceOperationRejectsUnsafeRuntime\n"}
{"Time":"2026-10-18T01:10:02.513315243Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationRejectsUnsafeRuntime","Output":"--- PASS: TestSourceOperationRejectsUnsafeRuntime (0.03s)\n"}
{"Time":"2026-10-18T01:10:02.513387859Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationRejectsUnsafeRuntime","Elapsed":0.03}
{"Time":"2026-10-18T01:10:02.513406452Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationRefusesSharedManagedSource"}
{"Time":"2026-10-18T01:10:02.51344299Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationRefusesSharedManagedSource","Output":"=== RUN TestSourceOperationRefusesSharedManagedSource\n"}
{"Time":"2026-10-18T01:10:02.545933826Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationRefusesSharedManagedSource","Output":"--- PASS: TestSourceOperationRefusesSharedManagedSource (0.03s)\n"}
{"Time":"2026-10-18T01:10:02.546001239Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationRefusesSharedManagedSource","Elapsed":0.03}
{"Time":"2026-10-18T01:10:02.546024017Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationBoundsPrivateJournalCustody"}
{"Time":"2026-10-18T01:10:02.546033827Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationBoundsPrivateJournalCustody","Output":"=== RUN TestSourceOperationBoundsPrivateJournalCustody\n"}
{"Time":"2026-10-18T01:10:02.574522351Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationBoundsPrivateJournalCustody","Output":"--- PASS: TestSourceOperationBoundsPrivateJournalCustody (0.03s)\n"}
{"Time":"2026-10-18T01:10:02.574585716Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationBoundsPrivateJournalCustody","Elapsed":0.03}
{"Time":"2026-10-18T01:10:02.57461164Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationRequiresExactPostState"}
{"Time":"2026-10-18T01:10:02.57462073Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationRequiresExactPostState","Output":"=== RUN TestSourceOperationRequiresExactPostState\n"}
{"Time":"2026-10-18T01:10:02.599179436Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationRequiresExactPostState","Output":"--- PASS: TestSourceOperationRequiresExactPostState (0.02s)\n"}
{"Time":"2026-10-18T01:10:02.599231412Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationRequiresExactPostState","Elapsed":0.02}
{"Time":"2026-10-18T01:10:02.599583593Z","Action":"output","Package":"forgejo.org/models/auth","Output":"PASS\n"}
{"Time":"2026-10-18T01:10:02.639359789Z","Action":"output","Package":"forgejo.org/models/auth","Output":"ok \tforgejo.org/models/auth\t3.529s\n"}
{"Time":"2026-10-18T01:10:02.639410908Z","Action":"pass","Package":"forgejo.org/models/auth","Elapsed":3.5300000000000002}
{"Time":"2026-10-18T01:10:11.401985609Z","Action":"start","Package":"forgejo.org/models/db"}
{"Time":"2026-10-18T01:10:11.729344921Z","Action":"output","Package":"forgejo.org/models/db","Output":"2026/10/18 01:10:11 ...s/storage/storage.go:157:initAttachments() [I] Initialising Attachment storage with type: local\n"}
{"Time":"2026-10-18T01:10:11.729432857Z","Action":"output","Package":"forgejo.org/models/db","Output":"2026/10/18 01:10:11 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata1233407081/attachments\n"}
{"Time":"2026-10-18T01:10:11.729449864Z","Action":"output","Package":"forgejo.org/models/db","Output":"2026/10/18 01:10:11 ...s/storage/storage.go:147:initAvatars() [I] Initialising Avatar storage with type: local\n"}
{"Time":"2026-10-18T01:10:11.729463723Z","Action":"output","Package":"forgejo.org/models/db","Output":"2026/10/18 01:10:11 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata1233407081/avatars\n"}
{"Time":"2026-10-18T01:10:11.729474679Z","Action":"output","Package":"forgejo.org/models/db","Output":"2026/10/18 01:10:11 ...s/storage/storage.go:173:initRepoAvatars() [I] Initialising Repository Avatar storage with type: local\n"}
{"Time":"2026-10-18T01:10:11.729484869Z","Action":"output","Package":"forgejo.org/models/db","Output":"2026/10/18 01:10:11 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata1233407081/repo-avatars\n"}
{"Time":"2026-10-18T01:10:11.729495274Z","Action":"output","Package":"forgejo.org/models/db","Output":"2026/10/18 01:10:11 ...s/storage/storage.go:179:initRepoArchives() [I] Initialising Repository Archive storage with type: local\n"}
{"Time":"2026-10-18T01:10:11.729544283Z","Action":"output","Package":"forgejo.org/models/db","Output":"2026/10/18 01:10:11 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata1233407081/repo-archive\n"}
{"Time":"2026-10-18T01:10:11.729555573Z","Action":"output","Package":"forgejo.org/models/db","Output":"2026/10/18 01:10:11 ...s/storage/storage.go:189:initPackages() [I] Initialising Packages storage with type: local\n"}
{"Time":"2026-10-18T01:10:11.729572724Z","Action":"output","Package":"forgejo.org/models/db","Output":"2026/10/18 01:10:11 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata1233407081/packages\n"}
{"Time":"2026-10-18T01:10:11.729580415Z","Action":"output","Package":"forgejo.org/models/db","Output":"2026/10/18 01:10:11 ...s/storage/storage.go:200:initActions() [I] Initialising Actions storage with type: local\n"}
{"Time":"2026-10-18T01:10:11.729588323Z","Action":"output","Package":"forgejo.org/models/db","Output":"2026/10/18 01:10:11 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata1233407081/actions_log\n"}
{"Time":"2026-10-18T01:10:11.729597954Z","Action":"output","Package":"forgejo.org/models/db","Output":"2026/10/18 01:10:11 ...s/storage/storage.go:204:initActions() [I] Initialising ActionsArtifacts storage with type: local\n"}
{"Time":"2026-10-18T01:10:11.729604663Z","Action":"output","Package":"forgejo.org/models/db","Output":"2026/10/18 01:10:11 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/go-build2012268276/b1335/data/actions_artifacts\n"}
{"Time":"2026-10-18T01:10:11.912112395Z","Action":"run","Package":"forgejo.org/models/db","Test":"TestSensitiveSQLLoggingChecksUnderlyingEngine"}
{"Time":"2026-10-18T01:10:11.912176264Z","Action":"output","Package":"forgejo.org/models/db","Test":"TestSensitiveSQLLoggingChecksUnderlyingEngine","Output":"=== RUN TestSensitiveSQLLoggingChecksUnderlyingEngine\n"}
{"Time":"2026-10-18T01:10:11.912338076Z","Action":"run","Package":"forgejo.org/models/db","Test":"TestSensitiveSQLLoggingChecksUnderlyingEngine/engine"}
{"Time":"2026-10-18T01:10:11.912371206Z","Action":"output","Package":"forgejo.org/models/db","Test":"TestSensitiveSQLLoggingChecksUnderlyingEngine/engine","Output":"=== RUN TestSensitiveSQLLoggingChecksUnderlyingEngine/engine\n"}
{"Time":"2026-10-18T01:10:11.912418663Z","Action":"output","Package":"forgejo.org/models/db","Test":"TestSensitiveSQLLoggingChecksUnderlyingEngine/engine","Output":"--- PASS: TestSensitiveSQLLoggingChecksUnderlyingEngine/engine (0.00s)\n"}
{"Time":"2026-10-18T01:10:11.912435138Z","Action":"pass","Package":"forgejo.org/models/db","Test":"TestSensitiveSQLLoggingChecksUnderlyingEngine/engine","Elapsed":0}
{"Time":"2026-10-18T01:10:11.912456446Z","Action":"run","Package":"forgejo.org/models/db","Test":"TestSensitiveSQLLoggingChecksUnderlyingEngine/session"}
{"Time":"2026-10-18T01:10:11.912469412Z","Action":"output","Package":"forgejo.org/models/db","Test":"TestSensitiveSQLLoggingChecksUnderlyingEngine/session","Output":"=== RUN TestSensitiveSQLLoggingChecksUnderlyingEngine/session\n"}
{"Time":"2026-10-18T01:10:11.912483867Z","Action":"output","Package":"forgejo.org/models/db","Test":"TestSensitiveSQLLoggingChecksUnderlyingEngine/session","Output":"--- PASS: TestSensitiveSQLLoggingChecksUnderlyingEngine/session (0.00s)\n"}
{"Time":"2026-10-18T01:10:11.912498295Z","Action":"pass","Package":"forgejo.org/models/db","Test":"TestSensitiveSQLLoggingChecksUnderlyingEngine/session","Elapsed":0}
{"Time":"2026-10-18T01:10:11.912528692Z","Action":"output","Package":"forgejo.org/models/db","Test":"TestSensitiveSQLLoggingChecksUnderlyingEngine","Output":"--- PASS: TestSensitiveSQLLoggingChecksUnderlyingEngine (0.00s)\n"}
{"Time":"2026-10-18T01:10:11.912541604Z","Action":"pass","Package":"forgejo.org/models/db","Test":"TestSensitiveSQLLoggingChecksUnderlyingEngine","Elapsed":0}
{"Time":"2026-10-18T01:10:11.91257248Z","Action":"run","Package":"forgejo.org/models/db","Test":"TestSensitiveSQLHooks"}
{"Time":"2026-10-18T01:10:11.912587042Z","Action":"output","Package":"forgejo.org/models/db","Test":"TestSensitiveSQLHooks","Output":"=== RUN TestSensitiveSQLHooks\n"}
{"Time":"2026-10-18T01:10:11.917359519Z","Action":"output","Package":"forgejo.org/models/db","Test":"TestSensitiveSQLHooks","Output":"--- PASS: TestSensitiveSQLHooks (0.00s)\n"}
{"Time":"2026-10-18T01:10:11.917418375Z","Action":"pass","Package":"forgejo.org/models/db","Test":"TestSensitiveSQLHooks","Elapsed":0}
{"Time":"2026-10-18T01:10:11.91743191Z","Action":"run","Package":"forgejo.org/models/db","Test":"TestSensitiveSQLActualContextPropagation"}
{"Time":"2026-10-18T01:10:11.917439484Z","Action":"output","Package":"forgejo.org/models/db","Test":"TestSensitiveSQLActualContextPropagation","Output":"=== RUN TestSensitiveSQLActualContextPropagation\n"}
{"Time":"2026-10-18T01:10:11.925345301Z","Action":"output","Package":"forgejo.org/models/db","Test":"TestSensitiveSQLActualContextPropagation","Output":"--- PASS: TestSensitiveSQLActualContextPropagation (0.01s)\n"}
{"Time":"2026-10-18T01:10:11.925393155Z","Action":"pass","Package":"forgejo.org/models/db","Test":"TestSensitiveSQLActualContextPropagation","Elapsed":0.01}
{"Time":"2026-10-18T01:10:11.925412434Z","Action":"run","Package":"forgejo.org/models/db","Test":"TestTracingContextSurvivesFollowingHooks"}
{"Time":"2026-10-18T01:10:11.925428413Z","Action":"output","Package":"forgejo.org/models/db","Test":"TestTracingContextSurvivesFollowingHooks","Output":"=== RUN TestTracingContextSurvivesFollowingHooks\n"}
{"Time":"2026-10-18T01:10:11.940422188Z","Action":"output","Package":"forgejo.org/models/db","Test":"TestTracingContextSurvivesFollowingHooks","Output":"--- PASS: TestTracingContextSurvivesFollowingHooks (0.01s)\n"}
{"Time":"2026-10-18T01:10:11.940475534Z","Action":"pass","Package":"forgejo.org/models/db","Test":"TestTracingContextSurvivesFollowingHooks","Elapsed":0.01}
{"Time":"2026-10-18T01:10:11.941079952Z","Action":"output","Package":"forgejo.org/models/db","Output":"PASS\n"}
{"Time":"2026-10-18T01:10:11.9794297Z","Action":"output","Package":"forgejo.org/models/db","Output":"ok \tforgejo.org/models/db\t0.577s\n"}
{"Time":"2026-10-18T01:10:11.979489755Z","Action":"pass","Package":"forgejo.org/models/db","Elapsed":0.578}

View file

@ -0,0 +1,195 @@
{
"action": "combined-regressions",
"returncode": 0,
"expected_returncode": 0,
"outcome_matches": true,
"seconds": 23.63,
"argv": [
"bwrap",
"--unshare-net",
"--unshare-pid",
"--die-with-parent",
"--new-session",
"--ro-bind",
"/usr",
"/usr",
"--ro-bind",
"/lib",
"/lib",
"--ro-bind",
"/lib64",
"/lib64",
"--symlink",
"usr/bin",
"/bin",
"--proc",
"/proc",
"--dev",
"/dev",
"--tmpfs",
"/tmp",
"--bind",
"/tmp/custodian-forgejo-release-r4",
"/work",
"--ro-bind",
"/tmp/custodian-forgejo-successor-attempt2/modules",
"/work/modules",
"--bind",
"/tmp/custodian-forgejo-successor-attempt2/gocache",
"/work/gocache",
"--ro-bind",
"/etc/ssl/certs",
"/etc/ssl/certs",
"--chdir",
"/work/source",
"--clearenv",
"--setenv",
"PATH",
"/work/go/bin:/usr/bin:/bin",
"--setenv",
"HOME",
"/work/home",
"--setenv",
"GOPATH",
"/work/gopath",
"--setenv",
"GOTOOLCHAIN",
"local",
"--setenv",
"GOPROXY",
"off",
"--setenv",
"GOSUMDB",
"off",
"--setenv",
"GOVCS",
"*:off",
"--setenv",
"GOMODCACHE",
"/work/modules",
"--setenv",
"GOCACHE",
"/work/gocache",
"--setenv",
"GOMAXPROCS",
"4",
"--setenv",
"CGO_ENABLED",
"1",
"--setenv",
"GIT_CONFIG_NOSYSTEM",
"1",
"--setenv",
"GIT_CONFIG_GLOBAL",
"/work/home/test.gitconfig",
"--setenv",
"GIT_TERMINAL_PROMPT",
"0",
"--ro-bind",
"/tmp/custodian-forgejo-postgres-tests-r1-attempt5/auth",
"/work/source/models/auth",
"--bind",
"/tmp/custodian-forgejo-postgres-tests-r1-attempt5",
"/pg-work",
"--dir",
"/run",
"--ro-bind",
"/tmp/custodian-forgejo-postgres-r1-attempt3/socket",
"/run/source-operation-postgres",
"--setenv",
"CUSTODIAN_PG_SOCKET",
"/run/source-operation-postgres",
"--ro-bind",
"/tmp/custodian-forgejo-postgres-tests-r1-attempt5/db",
"/work/source/models/db",
"--dir",
"/run",
"--ro-bind",
"/tmp/custodian-forgejo-postgres-tests-r1-attempt5/descriptor-fixtures-attempt2",
"/run/forgejo-oidc",
"--bind",
"/tmp/custodian-forgejo-postgres-tests-r1-attempt5/descriptor-fixtures-attempt2",
"/run/writable-input",
"--",
"go",
"test",
"-p",
"1",
"-json",
"-tags",
"sqlite sqlite_unlock_notify",
"./services/auth/source/oauth2",
"./cmd",
"./models/auth",
"./models/db",
"-run",
"TestAccessEngine|TestVerifiedApplicationIdentity|TestRequired|TestCurrent|TestPrivateSecret|TestSourceOperation|TestSensitiveSQL|TestTracingContext",
"-count=1"
],
"workspace": "/tmp/custodian-forgejo-postgres-tests-r1-attempt5",
"source_pins": {
"access_token.go": "sha256:c3131e03c24356fb09fdd600efd17d8054063534355a4c5a3b769f840a58c8ac",
"access_token_scope.go": "sha256:36173156237cc3c3231da78fc9c7e503391ea29c29496721bf4f6b197ab128d3",
"access_token_scope_test.go": "sha256:738bff8f60339a3b4cbd21c31f52812eacde1435fcf55ea657c2a950c262de7d",
"access_token_test.go": "sha256:0121b13b075e6dadb5f6bf5899ceb815786d386cd75214566545b1a3cbe5e721",
"auth_token.go": "sha256:e652217daeffab3c9918efaab56ba4a0a0e8024071840cd8bb85925fe2568bd9",
"main_test.go": "sha256:1c78be2861df2215936939b085bc2bac431f607731fe68da85cfc9c95a4eac87",
"oauth2.go": "sha256:626c075138a8e1dd22d4814b11c6d6acd04e8aae2443e47017de9a289b8f55ac",
"oauth2_list.go": "sha256:2665b0833370d4cb9d0a30e43bd86625f4f707e26a8e5bef53559816aafb7e91",
"oauth2_test.go": "sha256:66e671311715001e2c8119daa944667b9744b4a701732007c6f4510d1daf40ca",
"session.go": "sha256:25d934eb96d2b540a51b7337650b58123ad4ee7e1c61547e7efc1c36eb12c26d",
"session_test.go": "sha256:cae8e667a88143cf7ce3238e8adc9e87fd7f0bdf1b2c0d9b1736c2de38485659",
"source.go": "sha256:33ec2f66652bcb442cd80c36db0a2ad7305e1ee9c9c610d054720eea8ab18e4c",
"source_operation.go": "sha256:ef1b07ef6cf454015d00cde8588835f5118d829da91eb0303d37184859345a31",
"source_operation_internal_test.go": "sha256:af0f424d3a1fd2b29793b64baa1fa07284fee7ea0b7721c503db4efac0d871cb",
"source_operation_postgres_export_test.go": "sha256:b9d1553144766b15c408295b87506106935abf4ed61460598b58dc81825e808d",
"source_operation_postgres_test.go": "sha256:4a37504e5af00580d114ef1bed5cb32e09e4ec2de5fd3192adef043a4ea5f7fe",
"source_operation_process_test.go": "sha256:40d33b11a01cb659f0bf6f8b545c4d79910e8c082a789060bcbc9cadeee965bd",
"source_operation_test.go": "sha256:77d311bca42f48faf3fbdc15c53582e3d8a6d9108a72ed7bb6172e5b88951428",
"source_test.go": "sha256:1ad3f9b198155193fd8193f50084889cc949192abf64c060a5ce3043f2ccb212",
"two_factor.go": "sha256:d3a6e0b348b225d0fc012fdd5a6275736a1b324ec4cd1c013ae80a12531e0b8e",
"two_factor_test.go": "sha256:6a88cb12d204a3b3de49d584d589b1c5a97bfb795160ae93b87707f64bece4fe",
"twofactor.go": "sha256:905e1679be552346758b34c8ee7c950628d965d8bd3946b9b63c6797f41625d6",
"webauthn.go": "sha256:0f9adac61a225854d579ed71338303a30a5abf26e4c115a0afefaa4fd199200e",
"webauthn_test.go": "sha256:03f3487f7c05566e71399ff548a95400a66ed7afc96bbf31365aa7abb79dfa69"
},
"database_source_pins": {
"collation.go": "sha256:9922312734c5cc2a5474b322b88214586916b320969172708f48c7b6eca40e7d",
"common.go": "sha256:f0c626ebedaedb8681a4f3a3531441c49f3e0d305b20730aa47b267b6e16b3fd",
"consistency.go": "sha256:c771f62de8511bfc307583a4585190aba8b38ca2ac76eab200bc901aa15b7bad",
"context.go": "sha256:d4c4acfcb8987071aecf5cd957b3821c8d2619a2696398d37c2970f2527686f7",
"context_committer_test.go": "sha256:83cf7fbfc32aff358221abadee63e96a803a4136c9851cf696c543dc5176d777",
"context_test.go": "sha256:677f6be23f1c855a154de6078a540b60e17c737becfae6115e55ff6d81c3a937",
"convert.go": "sha256:48e62893b598b767dccbf414c0acffbc26c6cfb6cb22ba79eb5b66dbb6c8193a",
"engine.go": "sha256:d21a5b0b9ca37ac48222b79007467a232abc38edda99b3c5f54f1f4c5ab795e8",
"engine_test.go": "sha256:ec78585da5d8b33deb0b55ba3ffd9d8ff4df704ffd62c2d95c2a6ffddd5bc309",
"error.go": "sha256:ca0ead3529d977f90930974200a0a751366629590dae516cb54245d9c75bb280",
"index.go": "sha256:fdfdaf6da41f317d51665bfc03684074aadf5fb32607d80c15ee9b33fdc89f09",
"index_test.go": "sha256:d46ea9d96fc9b51e477ebecb5cfa0e15fc8e13a00c5c84ce620dd23e73663558",
"iterate.go": "sha256:0512e2f2a3785daec26f434f6b55c37e8cd590c1b49d2068f42160c424757e28",
"iterate_test.go": "sha256:8b9eb9d391bd99bddf6b3da5744bd80088eb4d8446c7f51dd3299abe1b8a5ebe",
"list.go": "sha256:e23e7056f9dbce52d85ca922fa4eadb834a6ee3a5dbcafe82485038332b798e0",
"list_test.go": "sha256:5bc42a869931470daf503b51bd3dbf5cb092d37d8cc4e03f80a21f564beadf6a",
"log.go": "sha256:6f080111c46868e337d4d6dd16c56a5743c13b86b412df219701030cd1718a01",
"main_test.go": "sha256:d9eb5ba4ab294ebb2c865969479d6d73db21669f24cc5454ac42f6dbd8825ef3",
"name.go": "sha256:e486e89a36103f56af54f5f39a9b166ac0b08800abaccc2857ab324777dda6b5",
"search.go": "sha256:b488e9a93f95d28450929896ce648e67f6772e1cd8662f7a0a1a8988a24dbfa2",
"sensitive_sql.go": "sha256:06a298d0d6e628e6920384d4ddeef449e40c090841ebaa3f6d175725a45ae584",
"sensitive_sql_logging_test.go": "sha256:d924b35d30686473caf29601cf51cc363ba68158cb4ef0981c9e2fc7b03c04b7",
"sensitive_sql_test.go": "sha256:de6353c955047c3311747e4777b9f9b2195e9efb19160b971dd758dfc94cf31b",
"sequence.go": "sha256:c0e4c7fbaa93961d9711143cfcf4bbb32f197985d21b77424946fbe3a39b38eb",
"sql_postgres_with_schema.go": "sha256:e5941e859ada7831b400fd3143e58f91b1058cb32779d6a4466af01617cf6e7a",
"tracing_context_test.go": "sha256:612b60c67a2be7e2da9173b95d5ef5abd7b9e1e377360828e39a622610bba070"
},
"original_composite_patch": "sha256:feb1079399a43989742ae0a946c1ada50113d1821e6541f97f0b5592ee1fc20c",
"runtime": "custodian-forgejo-pg-96ce905f445a",
"image_id": "sha256:57c72fd2a128e416c7fcc499958864df5301e940bca0a56f58fddf30ffc07777",
"controlled_mutation": {
"mutation": "none"
},
"network": "disabled; only the exact disposable database Unix socket is bound",
"production_database": false,
"actual_authenticated_operation": false,
"real_credentials": false,
"test_binary_sha256": "sha256:ea124dc75fa8c4d4063fdd2df57e506c1cd53e3c4478597e2d51b5c214de7569"
}

View file

@ -0,0 +1,436 @@
{"Time":"2026-10-18T01:12:23.107872463Z","Action":"start","Package":"forgejo.org/services/auth/source/oauth2"}
{"Time":"2026-10-18T01:12:23.194015099Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals"}
{"Time":"2026-10-18T01:12:23.19406675Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals","Output":"=== RUN TestAccessEngineKeyCapeAssuranceRefusals\n"}
{"Time":"2026-10-18T01:12:23.194110556Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/object-methods"}
{"Time":"2026-10-18T01:12:23.194116624Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/object-methods","Output":"=== RUN TestAccessEngineKeyCapeAssuranceRefusals/object-methods\n"}
{"Time":"2026-10-18T01:12:23.196052187Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/object-methods","Output":"--- PASS: TestAccessEngineKeyCapeAssuranceRefusals/object-methods (0.00s)\n"}
{"Time":"2026-10-18T01:12:23.196077408Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/object-methods","Elapsed":0}
{"Time":"2026-10-18T01:12:23.196089725Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/empty-methods"}
{"Time":"2026-10-18T01:12:23.196096254Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/empty-methods","Output":"=== RUN TestAccessEngineKeyCapeAssuranceRefusals/empty-methods\n"}
{"Time":"2026-10-18T01:12:23.196376546Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/empty-methods","Output":"--- PASS: TestAccessEngineKeyCapeAssuranceRefusals/empty-methods (0.00s)\n"}
{"Time":"2026-10-18T01:12:23.196396411Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/empty-methods","Elapsed":0}
{"Time":"2026-10-18T01:12:23.196404689Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/unknown-object-field"}
{"Time":"2026-10-18T01:12:23.196410586Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/unknown-object-field","Output":"=== RUN TestAccessEngineKeyCapeAssuranceRefusals/unknown-object-field\n"}
{"Time":"2026-10-18T01:12:23.196774288Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/unknown-object-field","Output":"--- PASS: TestAccessEngineKeyCapeAssuranceRefusals/unknown-object-field (0.00s)\n"}
{"Time":"2026-10-18T01:12:23.196816822Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/unknown-object-field","Elapsed":0}
{"Time":"2026-10-18T01:12:23.196836723Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/missing-at"}
{"Time":"2026-10-18T01:12:23.196843928Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/missing-at","Output":"=== RUN TestAccessEngineKeyCapeAssuranceRefusals/missing-at\n"}
{"Time":"2026-10-18T01:12:23.197004949Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/missing-at","Output":"--- PASS: TestAccessEngineKeyCapeAssuranceRefusals/missing-at (0.00s)\n"}
{"Time":"2026-10-18T01:12:23.197022163Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/missing-at","Elapsed":0}
{"Time":"2026-10-18T01:12:23.197030765Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/string-at"}
{"Time":"2026-10-18T01:12:23.197054923Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/string-at","Output":"=== RUN TestAccessEngineKeyCapeAssuranceRefusals/string-at\n"}
{"Time":"2026-10-18T01:12:23.197302554Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/string-at","Output":"--- PASS: TestAccessEngineKeyCapeAssuranceRefusals/string-at (0.00s)\n"}
{"Time":"2026-10-18T01:12:23.197319191Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/string-at","Elapsed":0}
{"Time":"2026-10-18T01:12:23.197326603Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/integer-mfa"}
{"Time":"2026-10-18T01:12:23.197332329Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/integer-mfa","Output":"=== RUN TestAccessEngineKeyCapeAssuranceRefusals/integer-mfa\n"}
{"Time":"2026-10-18T01:12:23.197575957Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/integer-mfa","Output":"--- PASS: TestAccessEngineKeyCapeAssuranceRefusals/integer-mfa (0.00s)\n"}
{"Time":"2026-10-18T01:12:23.197600808Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/integer-mfa","Elapsed":0}
{"Time":"2026-10-18T01:12:23.197608987Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/inconsistent-mfa"}
{"Time":"2026-10-18T01:12:23.197618356Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/inconsistent-mfa","Output":"=== RUN TestAccessEngineKeyCapeAssuranceRefusals/inconsistent-mfa\n"}
{"Time":"2026-10-18T01:12:23.197878648Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/inconsistent-mfa","Output":"--- PASS: TestAccessEngineKeyCapeAssuranceRefusals/inconsistent-mfa (0.00s)\n"}
{"Time":"2026-10-18T01:12:23.197900506Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/inconsistent-mfa","Elapsed":0}
{"Time":"2026-10-18T01:12:23.197908811Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/wrong-source"}
{"Time":"2026-10-18T01:12:23.197914672Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/wrong-source","Output":"=== RUN TestAccessEngineKeyCapeAssuranceRefusals/wrong-source\n"}
{"Time":"2026-10-18T01:12:23.19813023Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/wrong-source","Output":"--- PASS: TestAccessEngineKeyCapeAssuranceRefusals/wrong-source (0.00s)\n"}
{"Time":"2026-10-18T01:12:23.198145207Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/wrong-source","Elapsed":0}
{"Time":"2026-10-18T01:12:23.198151979Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/wrong-level"}
{"Time":"2026-10-18T01:12:23.198157236Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/wrong-level","Output":"=== RUN TestAccessEngineKeyCapeAssuranceRefusals/wrong-level\n"}
{"Time":"2026-10-18T01:12:23.198409449Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/wrong-level","Output":"--- PASS: TestAccessEngineKeyCapeAssuranceRefusals/wrong-level (0.00s)\n"}
{"Time":"2026-10-18T01:12:23.198423912Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/wrong-level","Elapsed":0}
{"Time":"2026-10-18T01:12:23.198442632Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/mixed-methods"}
{"Time":"2026-10-18T01:12:23.198449215Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/mixed-methods","Output":"=== RUN TestAccessEngineKeyCapeAssuranceRefusals/mixed-methods\n"}
{"Time":"2026-10-18T01:12:23.198727071Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/mixed-methods","Output":"--- PASS: TestAccessEngineKeyCapeAssuranceRefusals/mixed-methods (0.00s)\n"}
{"Time":"2026-10-18T01:12:23.198752572Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/mixed-methods","Elapsed":0}
{"Time":"2026-10-18T01:12:23.198760669Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/duplicate-methods"}
{"Time":"2026-10-18T01:12:23.19876892Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/duplicate-methods","Output":"=== RUN TestAccessEngineKeyCapeAssuranceRefusals/duplicate-methods\n"}
{"Time":"2026-10-18T01:12:23.198998807Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/duplicate-methods","Output":"--- PASS: TestAccessEngineKeyCapeAssuranceRefusals/duplicate-methods (0.00s)\n"}
{"Time":"2026-10-18T01:12:23.199019375Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/duplicate-methods","Elapsed":0}
{"Time":"2026-10-18T01:12:23.199026616Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/stale-authentication"}
{"Time":"2026-10-18T01:12:23.199031666Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/stale-authentication","Output":"=== RUN TestAccessEngineKeyCapeAssuranceRefusals/stale-authentication\n"}
{"Time":"2026-10-18T01:12:23.199276998Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/stale-authentication","Output":"--- PASS: TestAccessEngineKeyCapeAssuranceRefusals/stale-authentication (0.00s)\n"}
{"Time":"2026-10-18T01:12:23.19929148Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/stale-authentication","Elapsed":0}
{"Time":"2026-10-18T01:12:23.199298108Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/future-authentication"}
{"Time":"2026-10-18T01:12:23.199303193Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/future-authentication","Output":"=== RUN TestAccessEngineKeyCapeAssuranceRefusals/future-authentication\n"}
{"Time":"2026-10-18T01:12:23.199575713Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/future-authentication","Output":"--- PASS: TestAccessEngineKeyCapeAssuranceRefusals/future-authentication (0.00s)\n"}
{"Time":"2026-10-18T01:12:23.199594838Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/future-authentication","Elapsed":0}
{"Time":"2026-10-18T01:12:23.199607282Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/fractional-at"}
{"Time":"2026-10-18T01:12:23.199615073Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/fractional-at","Output":"=== RUN TestAccessEngineKeyCapeAssuranceRefusals/fractional-at\n"}
{"Time":"2026-10-18T01:12:23.199887773Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/fractional-at","Output":"--- PASS: TestAccessEngineKeyCapeAssuranceRefusals/fractional-at (0.00s)\n"}
{"Time":"2026-10-18T01:12:23.199911028Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals/fractional-at","Elapsed":0}
{"Time":"2026-10-18T01:12:23.200351214Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals","Output":"--- PASS: TestAccessEngineKeyCapeAssuranceRefusals (0.01s)\n"}
{"Time":"2026-10-18T01:12:23.200373108Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeAssuranceRefusals","Elapsed":0.01}
{"Time":"2026-10-18T01:12:23.200381278Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeIdentityFactsAndFreshnessBounds"}
{"Time":"2026-10-18T01:12:23.200386318Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeIdentityFactsAndFreshnessBounds","Output":"=== RUN TestAccessEngineKeyCapeIdentityFactsAndFreshnessBounds\n"}
{"Time":"2026-10-18T01:12:23.200841257Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeIdentityFactsAndFreshnessBounds","Output":"--- PASS: TestAccessEngineKeyCapeIdentityFactsAndFreshnessBounds (0.00s)\n"}
{"Time":"2026-10-18T01:12:23.200867776Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeIdentityFactsAndFreshnessBounds","Elapsed":0}
{"Time":"2026-10-18T01:12:23.200878047Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeLowerAssuranceIsAnIdentityFact"}
{"Time":"2026-10-18T01:12:23.200883313Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeLowerAssuranceIsAnIdentityFact","Output":"=== RUN TestAccessEngineKeyCapeLowerAssuranceIsAnIdentityFact\n"}
{"Time":"2026-10-18T01:12:23.20111869Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeLowerAssuranceIsAnIdentityFact","Output":"--- PASS: TestAccessEngineKeyCapeLowerAssuranceIsAnIdentityFact (0.00s)\n"}
{"Time":"2026-10-18T01:12:23.20113392Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineKeyCapeLowerAssuranceIsAnIdentityFact","Elapsed":0}
{"Time":"2026-10-18T01:12:23.201143208Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineAuthorizedPartyRefusesAnotherClient"}
{"Time":"2026-10-18T01:12:23.2011487Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineAuthorizedPartyRefusesAnotherClient","Output":"=== RUN TestAccessEngineAuthorizedPartyRefusesAnotherClient\n"}
{"Time":"2026-10-18T01:12:23.201157158Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineAuthorizedPartyRefusesAnotherClient/other-client"}
{"Time":"2026-10-18T01:12:23.20116218Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineAuthorizedPartyRefusesAnotherClient/other-client","Output":"=== RUN TestAccessEngineAuthorizedPartyRefusesAnotherClient/other-client\n"}
{"Time":"2026-10-18T01:12:23.201484069Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineAuthorizedPartyRefusesAnotherClient/other-client","Output":"--- PASS: TestAccessEngineAuthorizedPartyRefusesAnotherClient/other-client (0.00s)\n"}
{"Time":"2026-10-18T01:12:23.201498776Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineAuthorizedPartyRefusesAnotherClient/other-client","Elapsed":0}
{"Time":"2026-10-18T01:12:23.201505855Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineAuthorizedPartyRefusesAnotherClient/number"}
{"Time":"2026-10-18T01:12:23.201525855Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineAuthorizedPartyRefusesAnotherClient/number","Output":"=== RUN TestAccessEngineAuthorizedPartyRefusesAnotherClient/number\n"}
{"Time":"2026-10-18T01:12:23.201769979Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineAuthorizedPartyRefusesAnotherClient/number","Output":"--- PASS: TestAccessEngineAuthorizedPartyRefusesAnotherClient/number (0.00s)\n"}
{"Time":"2026-10-18T01:12:23.201785065Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineAuthorizedPartyRefusesAnotherClient/number","Elapsed":0}
{"Time":"2026-10-18T01:12:23.201791864Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineAuthorizedPartyRefusesAnotherClient/array"}
{"Time":"2026-10-18T01:12:23.201797031Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineAuthorizedPartyRefusesAnotherClient/array","Output":"=== RUN TestAccessEngineAuthorizedPartyRefusesAnotherClient/array\n"}
{"Time":"2026-10-18T01:12:23.202041516Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineAuthorizedPartyRefusesAnotherClient/array","Output":"--- PASS: TestAccessEngineAuthorizedPartyRefusesAnotherClient/array (0.00s)\n"}
{"Time":"2026-10-18T01:12:23.202060344Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineAuthorizedPartyRefusesAnotherClient/array","Elapsed":0}
{"Time":"2026-10-18T01:12:23.202067368Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineAuthorizedPartyRefusesAnotherClient/empty"}
{"Time":"2026-10-18T01:12:23.202072634Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineAuthorizedPartyRefusesAnotherClient/empty","Output":"=== RUN TestAccessEngineAuthorizedPartyRefusesAnotherClient/empty\n"}
{"Time":"2026-10-18T01:12:23.202307993Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineAuthorizedPartyRefusesAnotherClient/empty","Output":"--- PASS: TestAccessEngineAuthorizedPartyRefusesAnotherClient/empty (0.00s)\n"}
{"Time":"2026-10-18T01:12:23.202323963Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineAuthorizedPartyRefusesAnotherClient/empty","Elapsed":0}
{"Time":"2026-10-18T01:12:23.202331402Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineAuthorizedPartyRefusesAnotherClient","Output":"--- PASS: TestAccessEngineAuthorizedPartyRefusesAnotherClient (0.00s)\n"}
{"Time":"2026-10-18T01:12:23.202347191Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineAuthorizedPartyRefusesAnotherClient","Elapsed":0}
{"Time":"2026-10-18T01:12:23.202353089Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineAuthorizedPartyAcceptsAdmittedClient"}
{"Time":"2026-10-18T01:12:23.202357958Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineAuthorizedPartyAcceptsAdmittedClient","Output":"=== RUN TestAccessEngineAuthorizedPartyAcceptsAdmittedClient\n"}
{"Time":"2026-10-18T01:12:23.202770208Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineAuthorizedPartyAcceptsAdmittedClient","Output":"--- PASS: TestAccessEngineAuthorizedPartyAcceptsAdmittedClient (0.00s)\n"}
{"Time":"2026-10-18T01:12:23.202785664Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineAuthorizedPartyAcceptsAdmittedClient","Elapsed":0}
{"Time":"2026-10-18T01:12:23.202792202Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackAllowsAuthenticatedDecision"}
{"Time":"2026-10-18T01:12:23.202811381Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackAllowsAuthenticatedDecision","Output":"=== RUN TestAccessEngineActualCallbackAllowsAuthenticatedDecision\n"}
{"Time":"2026-10-18T01:12:23.202818829Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackAllowsAuthenticatedDecision/forge-admins"}
{"Time":"2026-10-18T01:12:23.202824123Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackAllowsAuthenticatedDecision/forge-admins","Output":"=== RUN TestAccessEngineActualCallbackAllowsAuthenticatedDecision/forge-admins\n"}
{"Time":"2026-10-18T01:12:23.220543576Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackAllowsAuthenticatedDecision/forge-admins","Output":"--- PASS: TestAccessEngineActualCallbackAllowsAuthenticatedDecision/forge-admins (0.02s)\n"}
{"Time":"2026-10-18T01:12:23.220595227Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackAllowsAuthenticatedDecision/forge-admins","Elapsed":0.02}
{"Time":"2026-10-18T01:12:23.220621332Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackAllowsAuthenticatedDecision/forge-coulomb-owners"}
{"Time":"2026-10-18T01:12:23.220632126Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackAllowsAuthenticatedDecision/forge-coulomb-owners","Output":"=== RUN TestAccessEngineActualCallbackAllowsAuthenticatedDecision/forge-coulomb-owners\n"}
{"Time":"2026-10-18T01:12:23.227940064Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackAllowsAuthenticatedDecision/forge-coulomb-owners","Output":"--- PASS: TestAccessEngineActualCallbackAllowsAuthenticatedDecision/forge-coulomb-owners (0.01s)\n"}
{"Time":"2026-10-18T01:12:23.227989876Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackAllowsAuthenticatedDecision/forge-coulomb-owners","Elapsed":0.01}
{"Time":"2026-10-18T01:12:23.22799947Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackAllowsAuthenticatedDecision/forge-coulomb-readers"}
{"Time":"2026-10-18T01:12:23.228004718Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackAllowsAuthenticatedDecision/forge-coulomb-readers","Output":"=== RUN TestAccessEngineActualCallbackAllowsAuthenticatedDecision/forge-coulomb-readers\n"}
{"Time":"2026-10-18T01:12:23.236625784Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackAllowsAuthenticatedDecision/forge-coulomb-readers","Output":"--- PASS: TestAccessEngineActualCallbackAllowsAuthenticatedDecision/forge-coulomb-readers (0.01s)\n"}
{"Time":"2026-10-18T01:12:23.236704316Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackAllowsAuthenticatedDecision/forge-coulomb-readers","Elapsed":0.01}
{"Time":"2026-10-18T01:12:23.236715362Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackAllowsAuthenticatedDecision","Output":"--- PASS: TestAccessEngineActualCallbackAllowsAuthenticatedDecision (0.03s)\n"}
{"Time":"2026-10-18T01:12:23.236750809Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackAllowsAuthenticatedDecision","Elapsed":0.03}
{"Time":"2026-10-18T01:12:23.236762423Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackRefusesUnverifiedPDP"}
{"Time":"2026-10-18T01:12:23.2367663Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackRefusesUnverifiedPDP","Output":"=== RUN TestAccessEngineActualCallbackRefusesUnverifiedPDP\n"}
{"Time":"2026-10-18T01:12:23.236964879Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackRefusesUnverifiedPDP/deny"}
{"Time":"2026-10-18T01:12:23.236984086Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackRefusesUnverifiedPDP/deny","Output":"=== RUN TestAccessEngineActualCallbackRefusesUnverifiedPDP/deny\n"}
{"Time":"2026-10-18T01:12:23.246816005Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackRefusesUnverifiedPDP/deny","Output":"--- PASS: TestAccessEngineActualCallbackRefusesUnverifiedPDP/deny (0.01s)\n"}
{"Time":"2026-10-18T01:12:23.246859153Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackRefusesUnverifiedPDP/deny","Elapsed":0.01}
{"Time":"2026-10-18T01:12:23.246867079Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackRefusesUnverifiedPDP/unsigned"}
{"Time":"2026-10-18T01:12:23.246870361Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackRefusesUnverifiedPDP/unsigned","Output":"=== RUN TestAccessEngineActualCallbackRefusesUnverifiedPDP/unsigned\n"}
{"Time":"2026-10-18T01:12:23.253818143Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackRefusesUnverifiedPDP/unsigned","Output":"--- PASS: TestAccessEngineActualCallbackRefusesUnverifiedPDP/unsigned (0.01s)\n"}
{"Time":"2026-10-18T01:12:23.253866331Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackRefusesUnverifiedPDP/unsigned","Elapsed":0.01}
{"Time":"2026-10-18T01:12:23.253875962Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackRefusesUnverifiedPDP/wrong-key"}
{"Time":"2026-10-18T01:12:23.253881859Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackRefusesUnverifiedPDP/wrong-key","Output":"=== RUN TestAccessEngineActualCallbackRefusesUnverifiedPDP/wrong-key\n"}
{"Time":"2026-10-18T01:12:23.261820508Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackRefusesUnverifiedPDP/wrong-key","Output":"--- PASS: TestAccessEngineActualCallbackRefusesUnverifiedPDP/wrong-key (0.01s)\n"}
{"Time":"2026-10-18T01:12:23.261865577Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackRefusesUnverifiedPDP/wrong-key","Elapsed":0.01}
{"Time":"2026-10-18T01:12:23.261873764Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackRefusesUnverifiedPDP/wrong-pin"}
{"Time":"2026-10-18T01:12:23.26187876Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackRefusesUnverifiedPDP/wrong-pin","Output":"=== RUN TestAccessEngineActualCallbackRefusesUnverifiedPDP/wrong-pin\n"}
{"Time":"2026-10-18T01:12:23.268416158Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackRefusesUnverifiedPDP/wrong-pin","Output":"--- PASS: TestAccessEngineActualCallbackRefusesUnverifiedPDP/wrong-pin (0.01s)\n"}
{"Time":"2026-10-18T01:12:23.268461632Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackRefusesUnverifiedPDP/wrong-pin","Elapsed":0.01}
{"Time":"2026-10-18T01:12:23.268469712Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackRefusesUnverifiedPDP/wrong-binding"}
{"Time":"2026-10-18T01:12:23.268474193Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackRefusesUnverifiedPDP/wrong-binding","Output":"=== RUN TestAccessEngineActualCallbackRefusesUnverifiedPDP/wrong-binding\n"}
{"Time":"2026-10-18T01:12:23.275666859Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackRefusesUnverifiedPDP/wrong-binding","Output":"--- PASS: TestAccessEngineActualCallbackRefusesUnverifiedPDP/wrong-binding (0.01s)\n"}
{"Time":"2026-10-18T01:12:23.275723866Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackRefusesUnverifiedPDP/wrong-binding","Elapsed":0.01}
{"Time":"2026-10-18T01:12:23.275739249Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackRefusesUnverifiedPDP/expired"}
{"Time":"2026-10-18T01:12:23.275744326Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackRefusesUnverifiedPDP/expired","Output":"=== RUN TestAccessEngineActualCallbackRefusesUnverifiedPDP/expired\n"}
{"Time":"2026-10-18T01:12:23.282539083Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackRefusesUnverifiedPDP/expired","Output":"--- PASS: TestAccessEngineActualCallbackRefusesUnverifiedPDP/expired (0.01s)\n"}
{"Time":"2026-10-18T01:12:23.282593385Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackRefusesUnverifiedPDP/expired","Elapsed":0.01}
{"Time":"2026-10-18T01:12:23.282605684Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackRefusesUnverifiedPDP","Output":"--- PASS: TestAccessEngineActualCallbackRefusesUnverifiedPDP (0.05s)\n"}
{"Time":"2026-10-18T01:12:23.282613187Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackRefusesUnverifiedPDP","Elapsed":0.05}
{"Time":"2026-10-18T01:12:23.282623331Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP"}
{"Time":"2026-10-18T01:12:23.282629715Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP","Output":"=== RUN TestAccessEngineActualCallbackChecksIdentityBeforePDP\n"}
{"Time":"2026-10-18T01:12:23.282636262Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP/wrong-source"}
{"Time":"2026-10-18T01:12:23.282641708Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP/wrong-source","Output":"=== RUN TestAccessEngineActualCallbackChecksIdentityBeforePDP/wrong-source\n"}
{"Time":"2026-10-18T01:12:23.283829622Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP/wrong-source","Output":"--- PASS: TestAccessEngineActualCallbackChecksIdentityBeforePDP/wrong-source (0.00s)\n"}
{"Time":"2026-10-18T01:12:23.283870326Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP/wrong-source","Elapsed":0}
{"Time":"2026-10-18T01:12:23.283878938Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP/wrong-provider"}
{"Time":"2026-10-18T01:12:23.283885701Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP/wrong-provider","Output":"=== RUN TestAccessEngineActualCallbackChecksIdentityBeforePDP/wrong-provider\n"}
{"Time":"2026-10-18T01:12:23.284814353Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP/wrong-provider","Output":"--- PASS: TestAccessEngineActualCallbackChecksIdentityBeforePDP/wrong-provider (0.00s)\n"}
{"Time":"2026-10-18T01:12:23.284849511Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP/wrong-provider","Elapsed":0}
{"Time":"2026-10-18T01:12:23.284868312Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP/wrong-audience"}
{"Time":"2026-10-18T01:12:23.284873777Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP/wrong-audience","Output":"=== RUN TestAccessEngineActualCallbackChecksIdentityBeforePDP/wrong-audience\n"}
{"Time":"2026-10-18T01:12:23.285815798Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP/wrong-audience","Output":"--- PASS: TestAccessEngineActualCallbackChecksIdentityBeforePDP/wrong-audience (0.00s)\n"}
{"Time":"2026-10-18T01:12:23.285856898Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP/wrong-audience","Elapsed":0}
{"Time":"2026-10-18T01:12:23.285865438Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP/missing-admission"}
{"Time":"2026-10-18T01:12:23.285871804Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP/missing-admission","Output":"=== RUN TestAccessEngineActualCallbackChecksIdentityBeforePDP/missing-admission\n"}
{"Time":"2026-10-18T01:12:23.286694323Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP/missing-admission","Output":"--- PASS: TestAccessEngineActualCallbackChecksIdentityBeforePDP/missing-admission (0.00s)\n"}
{"Time":"2026-10-18T01:12:23.286719373Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP/missing-admission","Elapsed":0}
{"Time":"2026-10-18T01:12:23.28672821Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP/expired-token"}
{"Time":"2026-10-18T01:12:23.28673307Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP/expired-token","Output":"=== RUN TestAccessEngineActualCallbackChecksIdentityBeforePDP/expired-token\n"}
{"Time":"2026-10-18T01:12:23.289408854Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP/expired-token","Output":"--- PASS: TestAccessEngineActualCallbackChecksIdentityBeforePDP/expired-token (0.00s)\n"}
{"Time":"2026-10-18T01:12:23.289466276Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP/expired-token","Elapsed":0}
{"Time":"2026-10-18T01:12:23.289476502Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP/untrusted-identity"}
{"Time":"2026-10-18T01:12:23.289488008Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP/untrusted-identity","Output":"=== RUN TestAccessEngineActualCallbackChecksIdentityBeforePDP/untrusted-identity\n"}
{"Time":"2026-10-18T01:12:23.29083514Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP/untrusted-identity","Output":"--- PASS: TestAccessEngineActualCallbackChecksIdentityBeforePDP/untrusted-identity (0.00s)\n"}
{"Time":"2026-10-18T01:12:23.290876817Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP/untrusted-identity","Elapsed":0}
{"Time":"2026-10-18T01:12:23.290886015Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP/missing-token"}
{"Time":"2026-10-18T01:12:23.290909415Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP/missing-token","Output":"=== RUN TestAccessEngineActualCallbackChecksIdentityBeforePDP/missing-token\n"}
{"Time":"2026-10-18T01:12:23.293218725Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP/missing-token","Output":"--- PASS: TestAccessEngineActualCallbackChecksIdentityBeforePDP/missing-token (0.00s)\n"}
{"Time":"2026-10-18T01:12:23.293265985Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP/missing-token","Elapsed":0}
{"Time":"2026-10-18T01:12:23.293272757Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP/missing-groups"}
{"Time":"2026-10-18T01:12:23.293277446Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP/missing-groups","Output":"=== RUN TestAccessEngineActualCallbackChecksIdentityBeforePDP/missing-groups\n"}
{"Time":"2026-10-18T01:12:23.294761333Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP/missing-groups","Output":"--- PASS: TestAccessEngineActualCallbackChecksIdentityBeforePDP/missing-groups (0.00s)\n"}
{"Time":"2026-10-18T01:12:23.294807574Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP/missing-groups","Elapsed":0}
{"Time":"2026-10-18T01:12:23.294814697Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP/mismatched-user"}
{"Time":"2026-10-18T01:12:23.294831298Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP/mismatched-user","Output":"=== RUN TestAccessEngineActualCallbackChecksIdentityBeforePDP/mismatched-user\n"}
{"Time":"2026-10-18T01:12:23.296016273Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP/mismatched-user","Output":"--- PASS: TestAccessEngineActualCallbackChecksIdentityBeforePDP/mismatched-user (0.00s)\n"}
{"Time":"2026-10-18T01:12:23.296051152Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP/mismatched-user","Elapsed":0}
{"Time":"2026-10-18T01:12:23.296057906Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP/mismatched-subject"}
{"Time":"2026-10-18T01:12:23.296061999Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP/mismatched-subject","Output":"=== RUN TestAccessEngineActualCallbackChecksIdentityBeforePDP/mismatched-subject\n"}
{"Time":"2026-10-18T01:12:23.29729968Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP/mismatched-subject","Output":"--- PASS: TestAccessEngineActualCallbackChecksIdentityBeforePDP/mismatched-subject (0.00s)\n"}
{"Time":"2026-10-18T01:12:23.297345776Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP/mismatched-subject","Elapsed":0}
{"Time":"2026-10-18T01:12:23.297353964Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP","Output":"--- PASS: TestAccessEngineActualCallbackChecksIdentityBeforePDP (0.01s)\n"}
{"Time":"2026-10-18T01:12:23.297364965Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestAccessEngineActualCallbackChecksIdentityBeforePDP","Elapsed":0.01}
{"Time":"2026-10-18T01:12:23.297408518Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE"}
{"Time":"2026-10-18T01:12:23.297415011Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE","Output":"=== RUN TestVerifiedApplicationIdentityActualJOSE\n"}
{"Time":"2026-10-18T01:12:23.297807908Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/issuer"}
{"Time":"2026-10-18T01:12:23.297880902Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/issuer","Output":"=== RUN TestVerifiedApplicationIdentityActualJOSE/issuer\n"}
{"Time":"2026-10-18T01:12:23.298159862Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/issuer","Output":"--- PASS: TestVerifiedApplicationIdentityActualJOSE/issuer (0.00s)\n"}
{"Time":"2026-10-18T01:12:23.298178014Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/issuer","Elapsed":0}
{"Time":"2026-10-18T01:12:23.298186815Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/future-issued"}
{"Time":"2026-10-18T01:12:23.298191847Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/future-issued","Output":"=== RUN TestVerifiedApplicationIdentityActualJOSE/future-issued\n"}
{"Time":"2026-10-18T01:12:23.298457278Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/future-issued","Output":"--- PASS: TestVerifiedApplicationIdentityActualJOSE/future-issued (0.00s)\n"}
{"Time":"2026-10-18T01:12:23.298469416Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/future-issued","Elapsed":0}
{"Time":"2026-10-18T01:12:23.298479046Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/no-iat"}
{"Time":"2026-10-18T01:12:23.298483356Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/no-iat","Output":"=== RUN TestVerifiedApplicationIdentityActualJOSE/no-iat\n"}
{"Time":"2026-10-18T01:12:23.298761502Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/no-iat","Output":"--- PASS: TestVerifiedApplicationIdentityActualJOSE/no-iat (0.00s)\n"}
{"Time":"2026-10-18T01:12:23.298774316Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/no-iat","Elapsed":0}
{"Time":"2026-10-18T01:12:23.298782026Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/no-assurance"}
{"Time":"2026-10-18T01:12:23.298786029Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/no-assurance","Output":"=== RUN TestVerifiedApplicationIdentityActualJOSE/no-assurance\n"}
{"Time":"2026-10-18T01:12:23.299056727Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/no-assurance","Output":"--- PASS: TestVerifiedApplicationIdentityActualJOSE/no-assurance (0.00s)\n"}
{"Time":"2026-10-18T01:12:23.299068062Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/no-assurance","Elapsed":0}
{"Time":"2026-10-18T01:12:23.299073075Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/audience"}
{"Time":"2026-10-18T01:12:23.299099027Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/audience","Output":"=== RUN TestVerifiedApplicationIdentityActualJOSE/audience\n"}
{"Time":"2026-10-18T01:12:23.299321753Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/audience","Output":"--- PASS: TestVerifiedApplicationIdentityActualJOSE/audience (0.00s)\n"}
{"Time":"2026-10-18T01:12:23.299334107Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/audience","Elapsed":0}
{"Time":"2026-10-18T01:12:23.299340743Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/expired"}
{"Time":"2026-10-18T01:12:23.299344927Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/expired","Output":"=== RUN TestVerifiedApplicationIdentityActualJOSE/expired\n"}
{"Time":"2026-10-18T01:12:23.299641919Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/expired","Output":"--- PASS: TestVerifiedApplicationIdentityActualJOSE/expired (0.00s)\n"}
{"Time":"2026-10-18T01:12:23.299654012Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/expired","Elapsed":0}
{"Time":"2026-10-18T01:12:23.299660784Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/old-issued"}
{"Time":"2026-10-18T01:12:23.299665049Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/old-issued","Output":"=== RUN TestVerifiedApplicationIdentityActualJOSE/old-issued\n"}
{"Time":"2026-10-18T01:12:23.29995507Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/old-issued","Output":"--- PASS: TestVerifiedApplicationIdentityActualJOSE/old-issued (0.00s)\n"}
{"Time":"2026-10-18T01:12:23.299967704Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/old-issued","Elapsed":0}
{"Time":"2026-10-18T01:12:23.299973159Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/no-exp"}
{"Time":"2026-10-18T01:12:23.299979606Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/no-exp","Output":"=== RUN TestVerifiedApplicationIdentityActualJOSE/no-exp\n"}
{"Time":"2026-10-18T01:12:23.300288276Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/no-exp","Output":"--- PASS: TestVerifiedApplicationIdentityActualJOSE/no-exp (0.00s)\n"}
{"Time":"2026-10-18T01:12:23.30031145Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/no-exp","Elapsed":0}
{"Time":"2026-10-18T01:12:23.300319331Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/no-tenant"}
{"Time":"2026-10-18T01:12:23.300323398Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/no-tenant","Output":"=== RUN TestVerifiedApplicationIdentityActualJOSE/no-tenant\n"}
{"Time":"2026-10-18T01:12:23.3005101Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/no-tenant","Output":"--- PASS: TestVerifiedApplicationIdentityActualJOSE/no-tenant (0.00s)\n"}
{"Time":"2026-10-18T01:12:23.300524122Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/no-tenant","Elapsed":0}
{"Time":"2026-10-18T01:12:23.300529262Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/no-principal"}
{"Time":"2026-10-18T01:12:23.300544149Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/no-principal","Output":"=== RUN TestVerifiedApplicationIdentityActualJOSE/no-principal\n"}
{"Time":"2026-10-18T01:12:23.300857362Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/no-principal","Output":"--- PASS: TestVerifiedApplicationIdentityActualJOSE/no-principal (0.00s)\n"}
{"Time":"2026-10-18T01:12:23.300898444Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/no-principal","Elapsed":0}
{"Time":"2026-10-18T01:12:23.300908787Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/multi-audience-no-azp"}
{"Time":"2026-10-18T01:12:23.300913314Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/multi-audience-no-azp","Output":"=== RUN TestVerifiedApplicationIdentityActualJOSE/multi-audience-no-azp\n"}
{"Time":"2026-10-18T01:12:23.301148213Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/multi-audience-no-azp","Output":"--- PASS: TestVerifiedApplicationIdentityActualJOSE/multi-audience-no-azp (0.00s)\n"}
{"Time":"2026-10-18T01:12:23.301164877Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/multi-audience-no-azp","Elapsed":0}
{"Time":"2026-10-18T01:12:23.301173552Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/empty-subject"}
{"Time":"2026-10-18T01:12:23.301178286Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/empty-subject","Output":"=== RUN TestVerifiedApplicationIdentityActualJOSE/empty-subject\n"}
{"Time":"2026-10-18T01:12:23.301413681Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/empty-subject","Output":"--- PASS: TestVerifiedApplicationIdentityActualJOSE/empty-subject (0.00s)\n"}
{"Time":"2026-10-18T01:12:23.301425322Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/empty-subject","Elapsed":0}
{"Time":"2026-10-18T01:12:23.301430435Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/wrong-key"}
{"Time":"2026-10-18T01:12:23.301434439Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/wrong-key","Output":"=== RUN TestVerifiedApplicationIdentityActualJOSE/wrong-key\n"}
{"Time":"2026-10-18T01:12:23.301723721Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/wrong-key","Output":"--- PASS: TestVerifiedApplicationIdentityActualJOSE/wrong-key (0.00s)\n"}
{"Time":"2026-10-18T01:12:23.301734785Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/wrong-key","Elapsed":0}
{"Time":"2026-10-18T01:12:23.301747644Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/unknown-key"}
{"Time":"2026-10-18T01:12:23.301751828Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/unknown-key","Output":"=== RUN TestVerifiedApplicationIdentityActualJOSE/unknown-key\n"}
{"Time":"2026-10-18T01:12:23.301942002Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/unknown-key","Output":"--- PASS: TestVerifiedApplicationIdentityActualJOSE/unknown-key (0.00s)\n"}
{"Time":"2026-10-18T01:12:23.301966673Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/unknown-key","Elapsed":0}
{"Time":"2026-10-18T01:12:23.30197404Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/wrong-type"}
{"Time":"2026-10-18T01:12:23.301978107Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/wrong-type","Output":"=== RUN TestVerifiedApplicationIdentityActualJOSE/wrong-type\n"}
{"Time":"2026-10-18T01:12:23.302155665Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/wrong-type","Output":"--- PASS: TestVerifiedApplicationIdentityActualJOSE/wrong-type (0.00s)\n"}
{"Time":"2026-10-18T01:12:23.302167216Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/wrong-type","Elapsed":0}
{"Time":"2026-10-18T01:12:23.302172392Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/algorithm-confusion"}
{"Time":"2026-10-18T01:12:23.30217636Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/algorithm-confusion","Output":"=== RUN TestVerifiedApplicationIdentityActualJOSE/algorithm-confusion\n"}
{"Time":"2026-10-18T01:12:23.302340447Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/algorithm-confusion","Output":"--- PASS: TestVerifiedApplicationIdentityActualJOSE/algorithm-confusion (0.00s)\n"}
{"Time":"2026-10-18T01:12:23.302353305Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/algorithm-confusion","Elapsed":0}
{"Time":"2026-10-18T01:12:23.302359239Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/none"}
{"Time":"2026-10-18T01:12:23.302363215Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/none","Output":"=== RUN TestVerifiedApplicationIdentityActualJOSE/none\n"}
{"Time":"2026-10-18T01:12:23.302435236Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/none","Output":"--- PASS: TestVerifiedApplicationIdentityActualJOSE/none (0.00s)\n"}
{"Time":"2026-10-18T01:12:23.302447986Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE/none","Elapsed":0}
{"Time":"2026-10-18T01:12:23.302453622Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE","Output":"--- PASS: TestVerifiedApplicationIdentityActualJOSE (0.01s)\n"}
{"Time":"2026-10-18T01:12:23.302458266Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestVerifiedApplicationIdentityActualJOSE","Elapsed":0.01}
{"Time":"2026-10-18T01:12:23.302603597Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestRequiredClaimExactAnyOfAndNoMutation"}
{"Time":"2026-10-18T01:12:23.302614634Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestRequiredClaimExactAnyOfAndNoMutation","Output":"=== RUN TestRequiredClaimExactAnyOfAndNoMutation\n"}
{"Time":"2026-10-18T01:12:23.302648449Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestRequiredClaimExactAnyOfAndNoMutation","Output":"--- PASS: TestRequiredClaimExactAnyOfAndNoMutation (0.00s)\n"}
{"Time":"2026-10-18T01:12:23.302712868Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestRequiredClaimExactAnyOfAndNoMutation","Elapsed":0}
{"Time":"2026-10-18T01:12:23.3027334Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestRequiredClaimConfigurationRefusalsAndLegacyIsolation"}
{"Time":"2026-10-18T01:12:23.302737774Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestRequiredClaimConfigurationRefusalsAndLegacyIsolation","Output":"=== RUN TestRequiredClaimConfigurationRefusalsAndLegacyIsolation\n"}
{"Time":"2026-10-18T01:12:23.302766268Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestRequiredClaimConfigurationRefusalsAndLegacyIsolation","Output":"--- PASS: TestRequiredClaimConfigurationRefusalsAndLegacyIsolation (0.00s)\n"}
{"Time":"2026-10-18T01:12:23.302772391Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestRequiredClaimConfigurationRefusalsAndLegacyIsolation","Elapsed":0}
{"Time":"2026-10-18T01:12:23.302865756Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestCurrentUserInfoGuardRejectsMissingMalformedAndUnavailable"}
{"Time":"2026-10-18T01:12:23.302876739Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestCurrentUserInfoGuardRejectsMissingMalformedAndUnavailable","Output":"=== RUN TestCurrentUserInfoGuardRejectsMissingMalformedAndUnavailable\n"}
{"Time":"2026-10-18T01:12:23.30714995Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestCurrentUserInfoGuardRejectsMissingMalformedAndUnavailable","Output":"--- PASS: TestCurrentUserInfoGuardRejectsMissingMalformedAndUnavailable (0.00s)\n"}
{"Time":"2026-10-18T01:12:23.307206822Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestCurrentUserInfoGuardRejectsMissingMalformedAndUnavailable","Elapsed":0}
{"Time":"2026-10-18T01:12:23.307223846Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestCurrentUserInfoEmptyArrayOverwritesAndGroupRemoval"}
{"Time":"2026-10-18T01:12:23.307229915Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestCurrentUserInfoEmptyArrayOverwritesAndGroupRemoval","Output":"=== RUN TestCurrentUserInfoEmptyArrayOverwritesAndGroupRemoval\n"}
{"Time":"2026-10-18T01:12:23.307251024Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestCurrentUserInfoEmptyArrayOverwritesAndGroupRemoval","Output":"--- PASS: TestCurrentUserInfoEmptyArrayOverwritesAndGroupRemoval (0.00s)\n"}
{"Time":"2026-10-18T01:12:23.307378799Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestCurrentUserInfoEmptyArrayOverwritesAndGroupRemoval","Elapsed":0}
{"Time":"2026-10-18T01:12:23.307393893Z","Action":"run","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestCurrentUserInfoGuardIsOptInAndRedirectsRefuse"}
{"Time":"2026-10-18T01:12:23.307400151Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestCurrentUserInfoGuardIsOptInAndRedirectsRefuse","Output":"=== RUN TestCurrentUserInfoGuardIsOptInAndRedirectsRefuse\n"}
{"Time":"2026-10-18T01:12:23.307416085Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestCurrentUserInfoGuardIsOptInAndRedirectsRefuse","Output":"--- PASS: TestCurrentUserInfoGuardIsOptInAndRedirectsRefuse (0.00s)\n"}
{"Time":"2026-10-18T01:12:23.307593817Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Test":"TestCurrentUserInfoGuardIsOptInAndRedirectsRefuse","Elapsed":0}
{"Time":"2026-10-18T01:12:23.307628019Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Output":"PASS\n"}
{"Time":"2026-10-18T01:12:23.314297011Z","Action":"output","Package":"forgejo.org/services/auth/source/oauth2","Output":"ok \tforgejo.org/services/auth/source/oauth2\t0.206s\n"}
{"Time":"2026-10-18T01:12:23.314394623Z","Action":"pass","Package":"forgejo.org/services/auth/source/oauth2","Elapsed":0.207}
{"Time":"2026-10-18T01:12:28.829932076Z","Action":"start","Package":"forgejo.org/cmd"}
{"Time":"2026-10-18T01:12:29.068524071Z","Action":"output","Package":"forgejo.org/cmd","Output":"2026/10/18 01:12:29 ...s/storage/storage.go:157:initAttachments() [I] Initialising Attachment storage with type: local\n"}
{"Time":"2026-10-18T01:12:29.06863574Z","Action":"output","Package":"forgejo.org/cmd","Output":"2026/10/18 01:12:29 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata843753395/attachments\n"}
{"Time":"2026-10-18T01:12:29.068678085Z","Action":"output","Package":"forgejo.org/cmd","Output":"2026/10/18 01:12:29 ...s/storage/storage.go:147:initAvatars() [I] Initialising Avatar storage with type: local\n"}
{"Time":"2026-10-18T01:12:29.06868612Z","Action":"output","Package":"forgejo.org/cmd","Output":"2026/10/18 01:12:29 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata843753395/avatars\n"}
{"Time":"2026-10-18T01:12:29.068692919Z","Action":"output","Package":"forgejo.org/cmd","Output":"2026/10/18 01:12:29 ...s/storage/storage.go:173:initRepoAvatars() [I] Initialising Repository Avatar storage with type: local\n"}
{"Time":"2026-10-18T01:12:29.068699438Z","Action":"output","Package":"forgejo.org/cmd","Output":"2026/10/18 01:12:29 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata843753395/repo-avatars\n"}
{"Time":"2026-10-18T01:12:29.068706454Z","Action":"output","Package":"forgejo.org/cmd","Output":"2026/10/18 01:12:29 ...s/storage/storage.go:179:initRepoArchives() [I] Initialising Repository Archive storage with type: local\n"}
{"Time":"2026-10-18T01:12:29.068712162Z","Action":"output","Package":"forgejo.org/cmd","Output":"2026/10/18 01:12:29 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata843753395/repo-archive\n"}
{"Time":"2026-10-18T01:12:29.068732495Z","Action":"output","Package":"forgejo.org/cmd","Output":"2026/10/18 01:12:29 ...s/storage/storage.go:189:initPackages() [I] Initialising Packages storage with type: local\n"}
{"Time":"2026-10-18T01:12:29.068740151Z","Action":"output","Package":"forgejo.org/cmd","Output":"2026/10/18 01:12:29 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata843753395/packages\n"}
{"Time":"2026-10-18T01:12:29.068745868Z","Action":"output","Package":"forgejo.org/cmd","Output":"2026/10/18 01:12:29 ...s/storage/storage.go:200:initActions() [I] Initialising Actions storage with type: local\n"}
{"Time":"2026-10-18T01:12:29.068752442Z","Action":"output","Package":"forgejo.org/cmd","Output":"2026/10/18 01:12:29 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata843753395/actions_log\n"}
{"Time":"2026-10-18T01:12:29.068758222Z","Action":"output","Package":"forgejo.org/cmd","Output":"2026/10/18 01:12:29 ...s/storage/storage.go:204:initActions() [I] Initialising ActionsArtifacts storage with type: local\n"}
{"Time":"2026-10-18T01:12:29.068764245Z","Action":"output","Package":"forgejo.org/cmd","Output":"2026/10/18 01:12:29 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/go-build4098959969/b1034/data/actions_artifacts\n"}
{"Time":"2026-10-18T01:12:29.455916688Z","Action":"run","Package":"forgejo.org/cmd","Test":"TestPrivateSecretMetadata"}
{"Time":"2026-10-18T01:12:29.455979557Z","Action":"output","Package":"forgejo.org/cmd","Test":"TestPrivateSecretMetadata","Output":"=== RUN TestPrivateSecretMetadata\n"}
{"Time":"2026-10-18T01:12:29.455996212Z","Action":"output","Package":"forgejo.org/cmd","Test":"TestPrivateSecretMetadata","Output":"--- PASS: TestPrivateSecretMetadata (0.00s)\n"}
{"Time":"2026-10-18T01:12:29.45601237Z","Action":"pass","Package":"forgejo.org/cmd","Test":"TestPrivateSecretMetadata","Elapsed":0}
{"Time":"2026-10-18T01:12:29.456025175Z","Action":"run","Package":"forgejo.org/cmd","Test":"TestPrivateSecretOpenedFileReplacement"}
{"Time":"2026-10-18T01:12:29.456030288Z","Action":"output","Package":"forgejo.org/cmd","Test":"TestPrivateSecretOpenedFileReplacement","Output":"=== RUN TestPrivateSecretOpenedFileReplacement\n"}
{"Time":"2026-10-18T01:12:29.456276964Z","Action":"output","Package":"forgejo.org/cmd","Test":"TestPrivateSecretOpenedFileReplacement","Output":"--- PASS: TestPrivateSecretOpenedFileReplacement (0.00s)\n"}
{"Time":"2026-10-18T01:12:29.456321383Z","Action":"pass","Package":"forgejo.org/cmd","Test":"TestPrivateSecretOpenedFileReplacement","Elapsed":0}
{"Time":"2026-10-18T01:12:29.45696085Z","Action":"output","Package":"forgejo.org/cmd","Output":"PASS\n"}
{"Time":"2026-10-18T01:12:29.487616123Z","Action":"output","Package":"forgejo.org/cmd","Output":"ok \tforgejo.org/cmd\t0.658s\n"}
{"Time":"2026-10-18T01:12:29.487693518Z","Action":"pass","Package":"forgejo.org/cmd","Elapsed":0.658}
{"Time":"2026-10-18T01:12:32.24391159Z","Action":"start","Package":"forgejo.org/models/auth"}
{"Time":"2026-10-18T01:12:32.437103083Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:12:32 ...s/storage/storage.go:157:initAttachments() [I] Initialising Attachment storage with type: local\n"}
{"Time":"2026-10-18T01:12:32.437286268Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:12:32 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata55143680/attachments\n"}
{"Time":"2026-10-18T01:12:32.439621655Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:12:32 ...s/storage/storage.go:147:initAvatars() [I] Initialising Avatar storage with type: local\n"}
{"Time":"2026-10-18T01:12:32.439680141Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:12:32 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata55143680/avatars\n"}
{"Time":"2026-10-18T01:12:32.439689059Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:12:32 ...s/storage/storage.go:173:initRepoAvatars() [I] Initialising Repository Avatar storage with type: local\n"}
{"Time":"2026-10-18T01:12:32.439694514Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:12:32 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata55143680/repo-avatars\n"}
{"Time":"2026-10-18T01:12:32.439700267Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:12:32 ...s/storage/storage.go:179:initRepoArchives() [I] Initialising Repository Archive storage with type: local\n"}
{"Time":"2026-10-18T01:12:32.439705759Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:12:32 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata55143680/repo-archive\n"}
{"Time":"2026-10-18T01:12:32.43971024Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:12:32 ...s/storage/storage.go:189:initPackages() [I] Initialising Packages storage with type: local\n"}
{"Time":"2026-10-18T01:12:32.439714812Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:12:32 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata55143680/packages\n"}
{"Time":"2026-10-18T01:12:32.439719411Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:12:32 ...s/storage/storage.go:200:initActions() [I] Initialising Actions storage with type: local\n"}
{"Time":"2026-10-18T01:12:32.439725146Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:12:32 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata55143680/actions_log\n"}
{"Time":"2026-10-18T01:12:32.439730655Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:12:32 ...s/storage/storage.go:204:initActions() [I] Initialising ActionsArtifacts storage with type: local\n"}
{"Time":"2026-10-18T01:12:32.439736327Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:12:32 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/go-build4098959969/b1314/data/actions_artifacts\n"}
{"Time":"2026-10-18T01:12:32.550268519Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationDatabaseWriterExclusion"}
{"Time":"2026-10-18T01:12:32.550394769Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationDatabaseWriterExclusion","Output":"=== RUN TestSourceOperationDatabaseWriterExclusion\n"}
{"Time":"2026-10-18T01:12:32.651494782Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationDatabaseWriterExclusion","Output":"--- PASS: TestSourceOperationDatabaseWriterExclusion (0.10s)\n"}
{"Time":"2026-10-18T01:12:32.65155059Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationDatabaseWriterExclusion","Elapsed":0.1}
{"Time":"2026-10-18T01:12:32.651902326Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationRefusesActualXORMArgumentLogging"}
{"Time":"2026-10-18T01:12:32.651919314Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationRefusesActualXORMArgumentLogging","Output":"=== RUN TestSourceOperationRefusesActualXORMArgumentLogging\n"}
{"Time":"2026-10-18T01:12:32.652187071Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationRefusesActualXORMArgumentLogging","Output":"[xorm] [info] 2026/10/18 01:12:32.652031 [SQL] BEGIN TRANSACTION [] - 85.456µs\n"}
{"Time":"2026-10-18T01:12:32.652216693Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationRefusesActualXORMArgumentLogging","Output":"[xorm] [info] 2026/10/18 01:12:32.652121 [SQL] ROLLBACK [] - 31.786µs\n"}
{"Time":"2026-10-18T01:12:32.652227982Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationRefusesActualXORMArgumentLogging","Output":"--- PASS: TestSourceOperationRefusesActualXORMArgumentLogging (0.00s)\n"}
{"Time":"2026-10-18T01:12:32.652237306Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationRefusesActualXORMArgumentLogging","Elapsed":0}
{"Time":"2026-10-18T01:12:32.654015671Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationProcessRecovery"}
{"Time":"2026-10-18T01:12:32.654070009Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationProcessRecovery","Output":"=== RUN TestSourceOperationProcessRecovery\n"}
{"Time":"2026-10-18T01:12:34.27579293Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationProcessRecovery","Output":"--- PASS: TestSourceOperationProcessRecovery (1.62s)\n"}
{"Time":"2026-10-18T01:12:34.275865636Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationProcessRecovery","Elapsed":1.62}
{"Time":"2026-10-18T01:12:34.27589184Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationCreateAndInverse"}
{"Time":"2026-10-18T01:12:34.275900317Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationCreateAndInverse","Output":"=== RUN TestSourceOperationCreateAndInverse\n"}
{"Time":"2026-10-18T01:12:34.299633307Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationCreateAndInverse","Output":"--- PASS: TestSourceOperationCreateAndInverse (0.02s)\n"}
{"Time":"2026-10-18T01:12:34.299688502Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationCreateAndInverse","Elapsed":0.02}
{"Time":"2026-10-18T01:12:34.299700441Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationRestoresExactRawPreexisting"}
{"Time":"2026-10-18T01:12:34.299706599Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationRestoresExactRawPreexisting","Output":"=== RUN TestSourceOperationRestoresExactRawPreexisting\n"}
{"Time":"2026-10-18T01:12:34.321309202Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationRestoresExactRawPreexisting","Output":"--- PASS: TestSourceOperationRestoresExactRawPreexisting (0.02s)\n"}
{"Time":"2026-10-18T01:12:34.321366452Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationRestoresExactRawPreexisting","Elapsed":0.02}
{"Time":"2026-10-18T01:12:34.321393901Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationUnchangedNeverDeletesPreexisting"}
{"Time":"2026-10-18T01:12:34.321400998Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationUnchangedNeverDeletesPreexisting","Output":"=== RUN TestSourceOperationUnchangedNeverDeletesPreexisting\n"}
{"Time":"2026-10-18T01:12:34.337138315Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationUnchangedNeverDeletesPreexisting","Output":"--- PASS: TestSourceOperationUnchangedNeverDeletesPreexisting (0.02s)\n"}
{"Time":"2026-10-18T01:12:34.337196666Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationUnchangedNeverDeletesPreexisting","Elapsed":0.02}
{"Time":"2026-10-18T01:12:34.337208966Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPrivateDriftRefuses"}
{"Time":"2026-10-18T01:12:34.337217938Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPrivateDriftRefuses","Output":"=== RUN TestSourceOperationPrivateDriftRefuses\n"}
{"Time":"2026-10-18T01:12:34.337233754Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPrivateDriftRefuses/before-apply"}
{"Time":"2026-10-18T01:12:34.337251906Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPrivateDriftRefuses/before-apply","Output":"=== RUN TestSourceOperationPrivateDriftRefuses/before-apply\n"}
{"Time":"2026-10-18T01:12:34.360907139Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPrivateDriftRefuses/before-apply","Output":"--- PASS: TestSourceOperationPrivateDriftRefuses/before-apply (0.02s)\n"}
{"Time":"2026-10-18T01:12:34.360966698Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPrivateDriftRefuses/before-apply","Elapsed":0.02}
{"Time":"2026-10-18T01:12:34.360980548Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPrivateDriftRefuses/before-inverse"}
{"Time":"2026-10-18T01:12:34.360986058Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPrivateDriftRefuses/before-inverse","Output":"=== RUN TestSourceOperationPrivateDriftRefuses/before-inverse\n"}
{"Time":"2026-10-18T01:12:34.377005905Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPrivateDriftRefuses/before-inverse","Output":"--- PASS: TestSourceOperationPrivateDriftRefuses/before-inverse (0.02s)\n"}
{"Time":"2026-10-18T01:12:34.377080694Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPrivateDriftRefuses/before-inverse","Elapsed":0.02}
{"Time":"2026-10-18T01:12:34.377093986Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPrivateDriftRefuses","Output":"--- PASS: TestSourceOperationPrivateDriftRefuses (0.04s)\n"}
{"Time":"2026-10-18T01:12:34.377102254Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPrivateDriftRefuses","Elapsed":0.04}
{"Time":"2026-10-18T01:12:34.377114635Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationStockCRUDDriftRefuses"}
{"Time":"2026-10-18T01:12:34.377218505Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationStockCRUDDriftRefuses","Output":"=== RUN TestSourceOperationStockCRUDDriftRefuses\n"}
{"Time":"2026-10-18T01:12:34.392712651Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationStockCRUDDriftRefuses","Output":"--- PASS: TestSourceOperationStockCRUDDriftRefuses (0.02s)\n"}
{"Time":"2026-10-18T01:12:34.392770307Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationStockCRUDDriftRefuses","Elapsed":0.02}
{"Time":"2026-10-18T01:12:34.392781948Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationLinkedSourceRefusesDeletion"}
{"Time":"2026-10-18T01:12:34.392830082Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationLinkedSourceRefusesDeletion","Output":"=== RUN TestSourceOperationLinkedSourceRefusesDeletion\n"}
{"Time":"2026-10-18T01:12:34.392863356Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationLinkedSourceRefusesDeletion/user"}
{"Time":"2026-10-18T01:12:34.392873969Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationLinkedSourceRefusesDeletion/user","Output":"=== RUN TestSourceOperationLinkedSourceRefusesDeletion/user\n"}
{"Time":"2026-10-18T01:12:34.410463384Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationLinkedSourceRefusesDeletion/user","Output":"--- PASS: TestSourceOperationLinkedSourceRefusesDeletion/user (0.02s)\n"}
{"Time":"2026-10-18T01:12:34.410515693Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationLinkedSourceRefusesDeletion/user","Elapsed":0.02}
{"Time":"2026-10-18T01:12:34.410528669Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationLinkedSourceRefusesDeletion/external"}
{"Time":"2026-10-18T01:12:34.410535035Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationLinkedSourceRefusesDeletion/external","Output":"=== RUN TestSourceOperationLinkedSourceRefusesDeletion/external\n"}
{"Time":"2026-10-18T01:12:34.425620514Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationLinkedSourceRefusesDeletion/external","Output":"--- PASS: TestSourceOperationLinkedSourceRefusesDeletion/external (0.01s)\n"}
{"Time":"2026-10-18T01:12:34.425682535Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationLinkedSourceRefusesDeletion/external","Elapsed":0.01}
{"Time":"2026-10-18T01:12:34.425696755Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationLinkedSourceRefusesDeletion","Output":"--- PASS: TestSourceOperationLinkedSourceRefusesDeletion (0.03s)\n"}
{"Time":"2026-10-18T01:12:34.425705105Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationLinkedSourceRefusesDeletion","Elapsed":0.03}
{"Time":"2026-10-18T01:12:34.425713049Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPreparedCancellationAndIDReuse"}
{"Time":"2026-10-18T01:12:34.425720651Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPreparedCancellationAndIDReuse","Output":"=== RUN TestSourceOperationPreparedCancellationAndIDReuse\n"}
{"Time":"2026-10-18T01:12:34.440609818Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPreparedCancellationAndIDReuse","Output":"--- PASS: TestSourceOperationPreparedCancellationAndIDReuse (0.01s)\n"}
{"Time":"2026-10-18T01:12:34.440703877Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPreparedCancellationAndIDReuse","Elapsed":0.01}
{"Time":"2026-10-18T01:12:34.44072752Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationRejectsUnsafeRuntime"}
{"Time":"2026-10-18T01:12:34.440745103Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationRejectsUnsafeRuntime","Output":"=== RUN TestSourceOperationRejectsUnsafeRuntime\n"}
{"Time":"2026-10-18T01:12:34.454490186Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationRejectsUnsafeRuntime","Output":"--- PASS: TestSourceOperationRejectsUnsafeRuntime (0.01s)\n"}
{"Time":"2026-10-18T01:12:34.454544821Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationRejectsUnsafeRuntime","Elapsed":0.01}
{"Time":"2026-10-18T01:12:34.454556174Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationRefusesSharedManagedSource"}
{"Time":"2026-10-18T01:12:34.454562053Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationRefusesSharedManagedSource","Output":"=== RUN TestSourceOperationRefusesSharedManagedSource\n"}
{"Time":"2026-10-18T01:12:34.471808411Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationRefusesSharedManagedSource","Output":"--- PASS: TestSourceOperationRefusesSharedManagedSource (0.02s)\n"}
{"Time":"2026-10-18T01:12:34.47190724Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationRefusesSharedManagedSource","Elapsed":0.02}
{"Time":"2026-10-18T01:12:34.471921632Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationBoundsPrivateJournalCustody"}
{"Time":"2026-10-18T01:12:34.471929522Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationBoundsPrivateJournalCustody","Output":"=== RUN TestSourceOperationBoundsPrivateJournalCustody\n"}
{"Time":"2026-10-18T01:12:34.486704483Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationBoundsPrivateJournalCustody","Output":"--- PASS: TestSourceOperationBoundsPrivateJournalCustody (0.01s)\n"}
{"Time":"2026-10-18T01:12:34.486759524Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationBoundsPrivateJournalCustody","Elapsed":0.01}
{"Time":"2026-10-18T01:12:34.487106372Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationRequiresExactPostState"}
{"Time":"2026-10-18T01:12:34.487137292Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationRequiresExactPostState","Output":"=== RUN TestSourceOperationRequiresExactPostState\n"}
{"Time":"2026-10-18T01:12:34.504315067Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationRequiresExactPostState","Output":"--- PASS: TestSourceOperationRequiresExactPostState (0.02s)\n"}
{"Time":"2026-10-18T01:12:34.504408422Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationRequiresExactPostState","Elapsed":0.02}
{"Time":"2026-10-18T01:12:34.504693224Z","Action":"output","Package":"forgejo.org/models/auth","Output":"PASS\n"}
{"Time":"2026-10-18T01:12:34.529425421Z","Action":"output","Package":"forgejo.org/models/auth","Output":"ok \tforgejo.org/models/auth\t2.285s\n"}
{"Time":"2026-10-18T01:12:34.529471463Z","Action":"pass","Package":"forgejo.org/models/auth","Elapsed":2.286}
{"Time":"2026-10-18T01:12:40.073004946Z","Action":"start","Package":"forgejo.org/models/db"}
{"Time":"2026-10-18T01:12:40.311385857Z","Action":"output","Package":"forgejo.org/models/db","Output":"2026/10/18 01:12:40 ...s/storage/storage.go:157:initAttachments() [I] Initialising Attachment storage with type: local\n"}
{"Time":"2026-10-18T01:12:40.311481791Z","Action":"output","Package":"forgejo.org/models/db","Output":"2026/10/18 01:12:40 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata1533321766/attachments\n"}
{"Time":"2026-10-18T01:12:40.311560818Z","Action":"output","Package":"forgejo.org/models/db","Output":"2026/10/18 01:12:40 ...s/storage/storage.go:147:initAvatars() [I] Initialising Avatar storage with type: local\n"}
{"Time":"2026-10-18T01:12:40.311622298Z","Action":"output","Package":"forgejo.org/models/db","Output":"2026/10/18 01:12:40 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata1533321766/avatars\n"}
{"Time":"2026-10-18T01:12:40.311631865Z","Action":"output","Package":"forgejo.org/models/db","Output":"2026/10/18 01:12:40 ...s/storage/storage.go:173:initRepoAvatars() [I] Initialising Repository Avatar storage with type: local\n"}
{"Time":"2026-10-18T01:12:40.311637411Z","Action":"output","Package":"forgejo.org/models/db","Output":"2026/10/18 01:12:40 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata1533321766/repo-avatars\n"}
{"Time":"2026-10-18T01:12:40.311652912Z","Action":"output","Package":"forgejo.org/models/db","Output":"2026/10/18 01:12:40 ...s/storage/storage.go:179:initRepoArchives() [I] Initialising Repository Archive storage with type: local\n"}
{"Time":"2026-10-18T01:12:40.311665743Z","Action":"output","Package":"forgejo.org/models/db","Output":"2026/10/18 01:12:40 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata1533321766/repo-archive\n"}
{"Time":"2026-10-18T01:12:40.311696357Z","Action":"output","Package":"forgejo.org/models/db","Output":"2026/10/18 01:12:40 ...s/storage/storage.go:189:initPackages() [I] Initialising Packages storage with type: local\n"}
{"Time":"2026-10-18T01:12:40.31171055Z","Action":"output","Package":"forgejo.org/models/db","Output":"2026/10/18 01:12:40 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata1533321766/packages\n"}
{"Time":"2026-10-18T01:12:40.311794933Z","Action":"output","Package":"forgejo.org/models/db","Output":"2026/10/18 01:12:40 ...s/storage/storage.go:200:initActions() [I] Initialising Actions storage with type: local\n"}
{"Time":"2026-10-18T01:12:40.311811245Z","Action":"output","Package":"forgejo.org/models/db","Output":"2026/10/18 01:12:40 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata1533321766/actions_log\n"}
{"Time":"2026-10-18T01:12:40.311818432Z","Action":"output","Package":"forgejo.org/models/db","Output":"2026/10/18 01:12:40 ...s/storage/storage.go:204:initActions() [I] Initialising ActionsArtifacts storage with type: local\n"}
{"Time":"2026-10-18T01:12:40.311824194Z","Action":"output","Package":"forgejo.org/models/db","Output":"2026/10/18 01:12:40 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/go-build4098959969/b1335/data/actions_artifacts\n"}
{"Time":"2026-10-18T01:12:40.457119609Z","Action":"run","Package":"forgejo.org/models/db","Test":"TestSensitiveSQLLoggingChecksUnderlyingEngine"}
{"Time":"2026-10-18T01:12:40.457172378Z","Action":"output","Package":"forgejo.org/models/db","Test":"TestSensitiveSQLLoggingChecksUnderlyingEngine","Output":"=== RUN TestSensitiveSQLLoggingChecksUnderlyingEngine\n"}
{"Time":"2026-10-18T01:12:40.457323702Z","Action":"run","Package":"forgejo.org/models/db","Test":"TestSensitiveSQLLoggingChecksUnderlyingEngine/engine"}
{"Time":"2026-10-18T01:12:40.457342151Z","Action":"output","Package":"forgejo.org/models/db","Test":"TestSensitiveSQLLoggingChecksUnderlyingEngine/engine","Output":"=== RUN TestSensitiveSQLLoggingChecksUnderlyingEngine/engine\n"}
{"Time":"2026-10-18T01:12:40.457356227Z","Action":"output","Package":"forgejo.org/models/db","Test":"TestSensitiveSQLLoggingChecksUnderlyingEngine/engine","Output":"--- PASS: TestSensitiveSQLLoggingChecksUnderlyingEngine/engine (0.00s)\n"}
{"Time":"2026-10-18T01:12:40.457361024Z","Action":"pass","Package":"forgejo.org/models/db","Test":"TestSensitiveSQLLoggingChecksUnderlyingEngine/engine","Elapsed":0}
{"Time":"2026-10-18T01:12:40.457446282Z","Action":"run","Package":"forgejo.org/models/db","Test":"TestSensitiveSQLLoggingChecksUnderlyingEngine/session"}
{"Time":"2026-10-18T01:12:40.457455227Z","Action":"output","Package":"forgejo.org/models/db","Test":"TestSensitiveSQLLoggingChecksUnderlyingEngine/session","Output":"=== RUN TestSensitiveSQLLoggingChecksUnderlyingEngine/session\n"}
{"Time":"2026-10-18T01:12:40.457481098Z","Action":"output","Package":"forgejo.org/models/db","Test":"TestSensitiveSQLLoggingChecksUnderlyingEngine/session","Output":"--- PASS: TestSensitiveSQLLoggingChecksUnderlyingEngine/session (0.00s)\n"}
{"Time":"2026-10-18T01:12:40.457487004Z","Action":"pass","Package":"forgejo.org/models/db","Test":"TestSensitiveSQLLoggingChecksUnderlyingEngine/session","Elapsed":0}
{"Time":"2026-10-18T01:12:40.457493668Z","Action":"output","Package":"forgejo.org/models/db","Test":"TestSensitiveSQLLoggingChecksUnderlyingEngine","Output":"--- PASS: TestSensitiveSQLLoggingChecksUnderlyingEngine (0.00s)\n"}
{"Time":"2026-10-18T01:12:40.457501251Z","Action":"pass","Package":"forgejo.org/models/db","Test":"TestSensitiveSQLLoggingChecksUnderlyingEngine","Elapsed":0}
{"Time":"2026-10-18T01:12:40.457650442Z","Action":"run","Package":"forgejo.org/models/db","Test":"TestSensitiveSQLHooks"}
{"Time":"2026-10-18T01:12:40.457664346Z","Action":"output","Package":"forgejo.org/models/db","Test":"TestSensitiveSQLHooks","Output":"=== RUN TestSensitiveSQLHooks\n"}
{"Time":"2026-10-18T01:12:40.464198995Z","Action":"output","Package":"forgejo.org/models/db","Test":"TestSensitiveSQLHooks","Output":"--- PASS: TestSensitiveSQLHooks (0.01s)\n"}
{"Time":"2026-10-18T01:12:40.464269663Z","Action":"pass","Package":"forgejo.org/models/db","Test":"TestSensitiveSQLHooks","Elapsed":0.01}
{"Time":"2026-10-18T01:12:40.464289293Z","Action":"run","Package":"forgejo.org/models/db","Test":"TestSensitiveSQLActualContextPropagation"}
{"Time":"2026-10-18T01:12:40.464293802Z","Action":"output","Package":"forgejo.org/models/db","Test":"TestSensitiveSQLActualContextPropagation","Output":"=== RUN TestSensitiveSQLActualContextPropagation\n"}
{"Time":"2026-10-18T01:12:40.466979632Z","Action":"output","Package":"forgejo.org/models/db","Test":"TestSensitiveSQLActualContextPropagation","Output":"--- PASS: TestSensitiveSQLActualContextPropagation (0.00s)\n"}
{"Time":"2026-10-18T01:12:40.467034394Z","Action":"pass","Package":"forgejo.org/models/db","Test":"TestSensitiveSQLActualContextPropagation","Elapsed":0}
{"Time":"2026-10-18T01:12:40.467046071Z","Action":"run","Package":"forgejo.org/models/db","Test":"TestTracingContextSurvivesFollowingHooks"}
{"Time":"2026-10-18T01:12:40.467051337Z","Action":"output","Package":"forgejo.org/models/db","Test":"TestTracingContextSurvivesFollowingHooks","Output":"=== RUN TestTracingContextSurvivesFollowingHooks\n"}
{"Time":"2026-10-18T01:12:40.477503439Z","Action":"output","Package":"forgejo.org/models/db","Test":"TestTracingContextSurvivesFollowingHooks","Output":"--- PASS: TestTracingContextSurvivesFollowingHooks (0.01s)\n"}
{"Time":"2026-10-18T01:12:40.477560338Z","Action":"pass","Package":"forgejo.org/models/db","Test":"TestTracingContextSurvivesFollowingHooks","Elapsed":0.01}
{"Time":"2026-10-18T01:12:40.478000697Z","Action":"output","Package":"forgejo.org/models/db","Output":"PASS\n"}
{"Time":"2026-10-18T01:12:40.510473676Z","Action":"output","Package":"forgejo.org/models/db","Output":"ok \tforgejo.org/models/db\t0.437s\n"}
{"Time":"2026-10-18T01:12:40.510532243Z","Action":"pass","Package":"forgejo.org/models/db","Elapsed":0.438}

View file

@ -0,0 +1,194 @@
{
"action": "crash",
"returncode": 73,
"expected_returncode": 73,
"outcome_matches": true,
"seconds": 2.22,
"argv": [
"bwrap",
"--unshare-pid",
"--die-with-parent",
"--new-session",
"--unshare-net",
"--ro-bind",
"/usr",
"/usr",
"--ro-bind",
"/lib",
"/lib",
"--ro-bind",
"/lib64",
"/lib64",
"--symlink",
"usr/bin",
"/bin",
"--proc",
"/proc",
"--dev",
"/dev",
"--tmpfs",
"/tmp",
"--bind",
"/tmp/custodian-forgejo-successor-r3",
"/work",
"--ro-bind",
"/home/worsch/go/pkg/mod/cache/download",
"/cached",
"--ro-bind",
"/etc/ssl/certs",
"/etc/ssl/certs",
"--ro-bind",
"/etc/resolv.conf",
"/etc/resolv.conf",
"--chdir",
"/work/source",
"--clearenv",
"--ro-bind",
"/tmp/custodian-forgejo-successor-attempt2/modules",
"/work/modules",
"--bind",
"/tmp/custodian-forgejo-successor-attempt2/gocache",
"/work/gocache",
"--dir",
"/run",
"--ro-bind",
"/tmp/custodian-forgejo-successor-r3/descriptor-fixtures",
"/run/forgejo-oidc",
"--bind",
"/tmp/custodian-forgejo-successor-r3/descriptor-fixtures",
"/run/writable-input",
"--setenv",
"PATH",
"/work/go/bin:/usr/bin:/bin",
"--setenv",
"HOME",
"/work/home",
"--setenv",
"GOPATH",
"/work/gopath",
"--setenv",
"GOTOOLCHAIN",
"local",
"--setenv",
"GOPROXY",
"off",
"--setenv",
"GOSUMDB",
"off",
"--setenv",
"GOVCS",
"*:off",
"--setenv",
"GOMODCACHE",
"/work/modules",
"--setenv",
"GOCACHE",
"/work/gocache",
"--setenv",
"GOMAXPROCS",
"4",
"--setenv",
"CGO_ENABLED",
"1",
"--setenv",
"GIT_CONFIG_NOSYSTEM",
"1",
"--setenv",
"GIT_CONFIG_GLOBAL",
"/work/home/test.gitconfig",
"--setenv",
"GIT_TERMINAL_PROMPT",
"0",
"--ro-bind",
"/tmp/custodian-forgejo-postgres-tests-r1-attempt4/auth",
"/work/source/models/auth",
"--bind",
"/tmp/custodian-forgejo-postgres-tests-r1-attempt4",
"/pg-work",
"--dir",
"/run",
"--ro-bind",
"/tmp/custodian-forgejo-postgres-r1-attempt3/socket",
"/run/source-operation-postgres",
"--setenv",
"CUSTODIAN_PG_SOCKET",
"/run/source-operation-postgres",
"--ro-bind",
"/tmp/custodian-forgejo-postgres-tests-r1-attempt4/db",
"/work/source/models/db",
"--setenv",
"CUSTODIAN_PG_STEP",
"crash",
"--",
"/pg-work/models-auth.test",
"-test.v",
"-test.run=^TestSourceOperationPostgresProcessRecovery$",
"-test.count=1"
],
"workspace": "/tmp/custodian-forgejo-postgres-tests-r1-attempt4",
"source_pins": {
"access_token.go": "sha256:c3131e03c24356fb09fdd600efd17d8054063534355a4c5a3b769f840a58c8ac",
"access_token_scope.go": "sha256:36173156237cc3c3231da78fc9c7e503391ea29c29496721bf4f6b197ab128d3",
"access_token_scope_test.go": "sha256:738bff8f60339a3b4cbd21c31f52812eacde1435fcf55ea657c2a950c262de7d",
"access_token_test.go": "sha256:0121b13b075e6dadb5f6bf5899ceb815786d386cd75214566545b1a3cbe5e721",
"auth_token.go": "sha256:e652217daeffab3c9918efaab56ba4a0a0e8024071840cd8bb85925fe2568bd9",
"main_test.go": "sha256:1c78be2861df2215936939b085bc2bac431f607731fe68da85cfc9c95a4eac87",
"oauth2.go": "sha256:626c075138a8e1dd22d4814b11c6d6acd04e8aae2443e47017de9a289b8f55ac",
"oauth2_list.go": "sha256:2665b0833370d4cb9d0a30e43bd86625f4f707e26a8e5bef53559816aafb7e91",
"oauth2_test.go": "sha256:66e671311715001e2c8119daa944667b9744b4a701732007c6f4510d1daf40ca",
"session.go": "sha256:25d934eb96d2b540a51b7337650b58123ad4ee7e1c61547e7efc1c36eb12c26d",
"session_test.go": "sha256:cae8e667a88143cf7ce3238e8adc9e87fd7f0bdf1b2c0d9b1736c2de38485659",
"source.go": "sha256:33ec2f66652bcb442cd80c36db0a2ad7305e1ee9c9c610d054720eea8ab18e4c",
"source_operation.go": "sha256:ef1b07ef6cf454015d00cde8588835f5118d829da91eb0303d37184859345a31",
"source_operation_internal_test.go": "sha256:af0f424d3a1fd2b29793b64baa1fa07284fee7ea0b7721c503db4efac0d871cb",
"source_operation_postgres_export_test.go": "sha256:b9d1553144766b15c408295b87506106935abf4ed61460598b58dc81825e808d",
"source_operation_postgres_test.go": "sha256:4a37504e5af00580d114ef1bed5cb32e09e4ec2de5fd3192adef043a4ea5f7fe",
"source_operation_process_test.go": "sha256:40d33b11a01cb659f0bf6f8b545c4d79910e8c082a789060bcbc9cadeee965bd",
"source_operation_test.go": "sha256:77d311bca42f48faf3fbdc15c53582e3d8a6d9108a72ed7bb6172e5b88951428",
"source_test.go": "sha256:1ad3f9b198155193fd8193f50084889cc949192abf64c060a5ce3043f2ccb212",
"two_factor.go": "sha256:d3a6e0b348b225d0fc012fdd5a6275736a1b324ec4cd1c013ae80a12531e0b8e",
"two_factor_test.go": "sha256:6a88cb12d204a3b3de49d584d589b1c5a97bfb795160ae93b87707f64bece4fe",
"twofactor.go": "sha256:905e1679be552346758b34c8ee7c950628d965d8bd3946b9b63c6797f41625d6",
"webauthn.go": "sha256:0f9adac61a225854d579ed71338303a30a5abf26e4c115a0afefaa4fd199200e",
"webauthn_test.go": "sha256:03f3487f7c05566e71399ff548a95400a66ed7afc96bbf31365aa7abb79dfa69"
},
"database_source_pins": {
"collation.go": "sha256:9922312734c5cc2a5474b322b88214586916b320969172708f48c7b6eca40e7d",
"common.go": "sha256:f0c626ebedaedb8681a4f3a3531441c49f3e0d305b20730aa47b267b6e16b3fd",
"consistency.go": "sha256:c771f62de8511bfc307583a4585190aba8b38ca2ac76eab200bc901aa15b7bad",
"context.go": "sha256:d4c4acfcb8987071aecf5cd957b3821c8d2619a2696398d37c2970f2527686f7",
"context_committer_test.go": "sha256:83cf7fbfc32aff358221abadee63e96a803a4136c9851cf696c543dc5176d777",
"context_test.go": "sha256:677f6be23f1c855a154de6078a540b60e17c737becfae6115e55ff6d81c3a937",
"convert.go": "sha256:48e62893b598b767dccbf414c0acffbc26c6cfb6cb22ba79eb5b66dbb6c8193a",
"engine.go": "sha256:d21a5b0b9ca37ac48222b79007467a232abc38edda99b3c5f54f1f4c5ab795e8",
"engine_test.go": "sha256:ec78585da5d8b33deb0b55ba3ffd9d8ff4df704ffd62c2d95c2a6ffddd5bc309",
"error.go": "sha256:ca0ead3529d977f90930974200a0a751366629590dae516cb54245d9c75bb280",
"index.go": "sha256:fdfdaf6da41f317d51665bfc03684074aadf5fb32607d80c15ee9b33fdc89f09",
"index_test.go": "sha256:d46ea9d96fc9b51e477ebecb5cfa0e15fc8e13a00c5c84ce620dd23e73663558",
"iterate.go": "sha256:0512e2f2a3785daec26f434f6b55c37e8cd590c1b49d2068f42160c424757e28",
"iterate_test.go": "sha256:8b9eb9d391bd99bddf6b3da5744bd80088eb4d8446c7f51dd3299abe1b8a5ebe",
"list.go": "sha256:e23e7056f9dbce52d85ca922fa4eadb834a6ee3a5dbcafe82485038332b798e0",
"list_test.go": "sha256:5bc42a869931470daf503b51bd3dbf5cb092d37d8cc4e03f80a21f564beadf6a",
"log.go": "sha256:6f080111c46868e337d4d6dd16c56a5743c13b86b412df219701030cd1718a01",
"main_test.go": "sha256:d9eb5ba4ab294ebb2c865969479d6d73db21669f24cc5454ac42f6dbd8825ef3",
"name.go": "sha256:e486e89a36103f56af54f5f39a9b166ac0b08800abaccc2857ab324777dda6b5",
"search.go": "sha256:b488e9a93f95d28450929896ce648e67f6772e1cd8662f7a0a1a8988a24dbfa2",
"sensitive_sql.go": "sha256:06a298d0d6e628e6920384d4ddeef449e40c090841ebaa3f6d175725a45ae584",
"sensitive_sql_logging_test.go": "sha256:d924b35d30686473caf29601cf51cc363ba68158cb4ef0981c9e2fc7b03c04b7",
"sensitive_sql_test.go": "sha256:de6353c955047c3311747e4777b9f9b2195e9efb19160b971dd758dfc94cf31b",
"sequence.go": "sha256:c0e4c7fbaa93961d9711143cfcf4bbb32f197985d21b77424946fbe3a39b38eb",
"sql_postgres_with_schema.go": "sha256:e5941e859ada7831b400fd3143e58f91b1058cb32779d6a4466af01617cf6e7a",
"tracing_context_test.go": "sha256:53d35e31ae9f318d8f77a323fdc5b18bae804bdc86ccb639f335dfbe59e9b17c"
},
"original_composite_patch": "sha256:15cb7f13b1b1d1095cc344176ca337f705333a436a70ae803fcfd3d7f802ccf4",
"runtime": "custodian-forgejo-pg-96ce905f445a",
"image_id": "sha256:57c72fd2a128e416c7fcc499958864df5301e940bca0a56f58fddf30ffc07777",
"controlled_mutation": {
"mutation": "none"
},
"network": "disabled; only the exact disposable database Unix socket is bound",
"production_database": false,
"actual_authenticated_operation": false,
"real_credentials": false,
"test_binary_sha256": "sha256:ea124dc75fa8c4d4063fdd2df57e506c1cd53e3c4478597e2d51b5c214de7569"
}

View file

@ -0,0 +1,15 @@
2026/10/18 01:02:02 ...s/storage/storage.go:157:initAttachments() [I] Initialising Attachment storage with type: local
2026/10/18 01:02:02 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata4082743399/attachments
2026/10/18 01:02:02 ...s/storage/storage.go:147:initAvatars() [I] Initialising Avatar storage with type: local
2026/10/18 01:02:02 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata4082743399/avatars
2026/10/18 01:02:02 ...s/storage/storage.go:173:initRepoAvatars() [I] Initialising Repository Avatar storage with type: local
2026/10/18 01:02:02 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata4082743399/repo-avatars
2026/10/18 01:02:02 ...s/storage/storage.go:179:initRepoArchives() [I] Initialising Repository Archive storage with type: local
2026/10/18 01:02:02 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata4082743399/repo-archive
2026/10/18 01:02:02 ...s/storage/storage.go:189:initPackages() [I] Initialising Packages storage with type: local
2026/10/18 01:02:02 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata4082743399/packages
2026/10/18 01:02:02 ...s/storage/storage.go:200:initActions() [I] Initialising Actions storage with type: local
2026/10/18 01:02:02 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata4082743399/actions_log
2026/10/18 01:02:02 ...s/storage/storage.go:204:initActions() [I] Initialising ActionsArtifacts storage with type: local
2026/10/18 01:02:02 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /pg-work/data/actions_artifacts
=== RUN TestSourceOperationPostgresProcessRecovery

View file

@ -0,0 +1,198 @@
{
"action": "db-regressions",
"returncode": 1,
"expected_returncode": 0,
"outcome_matches": false,
"seconds": 2.72,
"argv": [
"bwrap",
"--unshare-pid",
"--die-with-parent",
"--new-session",
"--unshare-net",
"--ro-bind",
"/usr",
"/usr",
"--ro-bind",
"/lib",
"/lib",
"--ro-bind",
"/lib64",
"/lib64",
"--symlink",
"usr/bin",
"/bin",
"--proc",
"/proc",
"--dev",
"/dev",
"--tmpfs",
"/tmp",
"--bind",
"/tmp/custodian-forgejo-successor-r3",
"/work",
"--ro-bind",
"/home/worsch/go/pkg/mod/cache/download",
"/cached",
"--ro-bind",
"/etc/ssl/certs",
"/etc/ssl/certs",
"--ro-bind",
"/etc/resolv.conf",
"/etc/resolv.conf",
"--chdir",
"/work/source",
"--clearenv",
"--ro-bind",
"/tmp/custodian-forgejo-successor-attempt2/modules",
"/work/modules",
"--bind",
"/tmp/custodian-forgejo-successor-attempt2/gocache",
"/work/gocache",
"--dir",
"/run",
"--ro-bind",
"/tmp/custodian-forgejo-successor-r3/descriptor-fixtures",
"/run/forgejo-oidc",
"--bind",
"/tmp/custodian-forgejo-successor-r3/descriptor-fixtures",
"/run/writable-input",
"--setenv",
"PATH",
"/work/go/bin:/usr/bin:/bin",
"--setenv",
"HOME",
"/work/home",
"--setenv",
"GOPATH",
"/work/gopath",
"--setenv",
"GOTOOLCHAIN",
"local",
"--setenv",
"GOPROXY",
"off",
"--setenv",
"GOSUMDB",
"off",
"--setenv",
"GOVCS",
"*:off",
"--setenv",
"GOMODCACHE",
"/work/modules",
"--setenv",
"GOCACHE",
"/work/gocache",
"--setenv",
"GOMAXPROCS",
"4",
"--setenv",
"CGO_ENABLED",
"1",
"--setenv",
"GIT_CONFIG_NOSYSTEM",
"1",
"--setenv",
"GIT_CONFIG_GLOBAL",
"/work/home/test.gitconfig",
"--setenv",
"GIT_TERMINAL_PROMPT",
"0",
"--ro-bind",
"/tmp/custodian-forgejo-postgres-tests-r1-attempt4/auth",
"/work/source/models/auth",
"--bind",
"/tmp/custodian-forgejo-postgres-tests-r1-attempt4",
"/pg-work",
"--dir",
"/run",
"--ro-bind",
"/tmp/custodian-forgejo-postgres-r1-attempt3/socket",
"/run/source-operation-postgres",
"--setenv",
"CUSTODIAN_PG_SOCKET",
"/run/source-operation-postgres",
"--ro-bind",
"/tmp/custodian-forgejo-postgres-tests-r1-attempt4/db",
"/work/source/models/db",
"--",
"go",
"test",
"-p",
"1",
"-json",
"-tags",
"sqlite sqlite_unlock_notify",
"./models/db",
"-run",
"TestSensitiveSQL|TestTracingContext",
"-count=1"
],
"workspace": "/tmp/custodian-forgejo-postgres-tests-r1-attempt4",
"source_pins": {
"access_token.go": "sha256:c3131e03c24356fb09fdd600efd17d8054063534355a4c5a3b769f840a58c8ac",
"access_token_scope.go": "sha256:36173156237cc3c3231da78fc9c7e503391ea29c29496721bf4f6b197ab128d3",
"access_token_scope_test.go": "sha256:738bff8f60339a3b4cbd21c31f52812eacde1435fcf55ea657c2a950c262de7d",
"access_token_test.go": "sha256:0121b13b075e6dadb5f6bf5899ceb815786d386cd75214566545b1a3cbe5e721",
"auth_token.go": "sha256:e652217daeffab3c9918efaab56ba4a0a0e8024071840cd8bb85925fe2568bd9",
"main_test.go": "sha256:1c78be2861df2215936939b085bc2bac431f607731fe68da85cfc9c95a4eac87",
"oauth2.go": "sha256:626c075138a8e1dd22d4814b11c6d6acd04e8aae2443e47017de9a289b8f55ac",
"oauth2_list.go": "sha256:2665b0833370d4cb9d0a30e43bd86625f4f707e26a8e5bef53559816aafb7e91",
"oauth2_test.go": "sha256:66e671311715001e2c8119daa944667b9744b4a701732007c6f4510d1daf40ca",
"session.go": "sha256:25d934eb96d2b540a51b7337650b58123ad4ee7e1c61547e7efc1c36eb12c26d",
"session_test.go": "sha256:cae8e667a88143cf7ce3238e8adc9e87fd7f0bdf1b2c0d9b1736c2de38485659",
"source.go": "sha256:33ec2f66652bcb442cd80c36db0a2ad7305e1ee9c9c610d054720eea8ab18e4c",
"source_operation.go": "sha256:ef1b07ef6cf454015d00cde8588835f5118d829da91eb0303d37184859345a31",
"source_operation_internal_test.go": "sha256:af0f424d3a1fd2b29793b64baa1fa07284fee7ea0b7721c503db4efac0d871cb",
"source_operation_postgres_export_test.go": "sha256:b9d1553144766b15c408295b87506106935abf4ed61460598b58dc81825e808d",
"source_operation_postgres_test.go": "sha256:4a37504e5af00580d114ef1bed5cb32e09e4ec2de5fd3192adef043a4ea5f7fe",
"source_operation_process_test.go": "sha256:40d33b11a01cb659f0bf6f8b545c4d79910e8c082a789060bcbc9cadeee965bd",
"source_operation_test.go": "sha256:77d311bca42f48faf3fbdc15c53582e3d8a6d9108a72ed7bb6172e5b88951428",
"source_test.go": "sha256:1ad3f9b198155193fd8193f50084889cc949192abf64c060a5ce3043f2ccb212",
"two_factor.go": "sha256:d3a6e0b348b225d0fc012fdd5a6275736a1b324ec4cd1c013ae80a12531e0b8e",
"two_factor_test.go": "sha256:6a88cb12d204a3b3de49d584d589b1c5a97bfb795160ae93b87707f64bece4fe",
"twofactor.go": "sha256:905e1679be552346758b34c8ee7c950628d965d8bd3946b9b63c6797f41625d6",
"webauthn.go": "sha256:0f9adac61a225854d579ed71338303a30a5abf26e4c115a0afefaa4fd199200e",
"webauthn_test.go": "sha256:03f3487f7c05566e71399ff548a95400a66ed7afc96bbf31365aa7abb79dfa69"
},
"database_source_pins": {
"collation.go": "sha256:9922312734c5cc2a5474b322b88214586916b320969172708f48c7b6eca40e7d",
"common.go": "sha256:f0c626ebedaedb8681a4f3a3531441c49f3e0d305b20730aa47b267b6e16b3fd",
"consistency.go": "sha256:c771f62de8511bfc307583a4585190aba8b38ca2ac76eab200bc901aa15b7bad",
"context.go": "sha256:d4c4acfcb8987071aecf5cd957b3821c8d2619a2696398d37c2970f2527686f7",
"context_committer_test.go": "sha256:83cf7fbfc32aff358221abadee63e96a803a4136c9851cf696c543dc5176d777",
"context_test.go": "sha256:677f6be23f1c855a154de6078a540b60e17c737becfae6115e55ff6d81c3a937",
"convert.go": "sha256:48e62893b598b767dccbf414c0acffbc26c6cfb6cb22ba79eb5b66dbb6c8193a",
"engine.go": "sha256:d21a5b0b9ca37ac48222b79007467a232abc38edda99b3c5f54f1f4c5ab795e8",
"engine_test.go": "sha256:ec78585da5d8b33deb0b55ba3ffd9d8ff4df704ffd62c2d95c2a6ffddd5bc309",
"error.go": "sha256:ca0ead3529d977f90930974200a0a751366629590dae516cb54245d9c75bb280",
"index.go": "sha256:fdfdaf6da41f317d51665bfc03684074aadf5fb32607d80c15ee9b33fdc89f09",
"index_test.go": "sha256:d46ea9d96fc9b51e477ebecb5cfa0e15fc8e13a00c5c84ce620dd23e73663558",
"iterate.go": "sha256:0512e2f2a3785daec26f434f6b55c37e8cd590c1b49d2068f42160c424757e28",
"iterate_test.go": "sha256:8b9eb9d391bd99bddf6b3da5744bd80088eb4d8446c7f51dd3299abe1b8a5ebe",
"list.go": "sha256:e23e7056f9dbce52d85ca922fa4eadb834a6ee3a5dbcafe82485038332b798e0",
"list_test.go": "sha256:5bc42a869931470daf503b51bd3dbf5cb092d37d8cc4e03f80a21f564beadf6a",
"log.go": "sha256:6f080111c46868e337d4d6dd16c56a5743c13b86b412df219701030cd1718a01",
"main_test.go": "sha256:d9eb5ba4ab294ebb2c865969479d6d73db21669f24cc5454ac42f6dbd8825ef3",
"name.go": "sha256:e486e89a36103f56af54f5f39a9b166ac0b08800abaccc2857ab324777dda6b5",
"search.go": "sha256:b488e9a93f95d28450929896ce648e67f6772e1cd8662f7a0a1a8988a24dbfa2",
"sensitive_sql.go": "sha256:06a298d0d6e628e6920384d4ddeef449e40c090841ebaa3f6d175725a45ae584",
"sensitive_sql_logging_test.go": "sha256:d924b35d30686473caf29601cf51cc363ba68158cb4ef0981c9e2fc7b03c04b7",
"sensitive_sql_test.go": "sha256:de6353c955047c3311747e4777b9f9b2195e9efb19160b971dd758dfc94cf31b",
"sequence.go": "sha256:c0e4c7fbaa93961d9711143cfcf4bbb32f197985d21b77424946fbe3a39b38eb",
"sql_postgres_with_schema.go": "sha256:e5941e859ada7831b400fd3143e58f91b1058cb32779d6a4466af01617cf6e7a",
"tracing_context_test.go": "sha256:53d35e31ae9f318d8f77a323fdc5b18bae804bdc86ccb639f335dfbe59e9b17c"
},
"original_composite_patch": "sha256:15cb7f13b1b1d1095cc344176ca337f705333a436a70ae803fcfd3d7f802ccf4",
"runtime": "custodian-forgejo-pg-96ce905f445a",
"image_id": "sha256:57c72fd2a128e416c7fcc499958864df5301e940bca0a56f58fddf30ffc07777",
"controlled_mutation": {
"mutation": "none"
},
"network": "disabled; only the exact disposable database Unix socket is bound",
"production_database": false,
"actual_authenticated_operation": false,
"real_credentials": false,
"test_binary_sha256": "sha256:ea124dc75fa8c4d4063fdd2df57e506c1cd53e3c4478597e2d51b5c214de7569"
}

View file

@ -0,0 +1,8 @@
{"ImportPath":"forgejo.org/models/db [forgejo.org/models/db.test]","Action":"build-output","Output":"# forgejo.org/models/db [forgejo.org/models/db.test]\n"}
{"ImportPath":"forgejo.org/models/db [forgejo.org/models/db.test]","Action":"build-output","Output":"models/db/tracing_context_test.go:27:34: too many arguments in call to engine.AddHook\n"}
{"ImportPath":"forgejo.org/models/db [forgejo.org/models/db.test]","Action":"build-output","Output":"\thave (TracingHook, followingQueryHook)\n"}
{"ImportPath":"forgejo.org/models/db [forgejo.org/models/db.test]","Action":"build-output","Output":"\twant (contexts.Hook)\n"}
{"ImportPath":"forgejo.org/models/db [forgejo.org/models/db.test]","Action":"build-fail"}
{"Time":"2026-10-18T01:00:40.417523842Z","Action":"start","Package":"forgejo.org/models/db"}
{"Time":"2026-10-18T01:00:40.417889644Z","Action":"output","Package":"forgejo.org/models/db","Output":"FAIL\tforgejo.org/models/db [build failed]\n"}
{"Time":"2026-10-18T01:00:40.417940655Z","Action":"fail","Package":"forgejo.org/models/db","Elapsed":0,"FailedBuild":"forgejo.org/models/db [forgejo.org/models/db.test]"}

View file

@ -0,0 +1,198 @@
{
"action": "db-regressions",
"returncode": 0,
"expected_returncode": 0,
"outcome_matches": true,
"seconds": 80.41,
"argv": [
"bwrap",
"--unshare-pid",
"--die-with-parent",
"--new-session",
"--unshare-net",
"--ro-bind",
"/usr",
"/usr",
"--ro-bind",
"/lib",
"/lib",
"--ro-bind",
"/lib64",
"/lib64",
"--symlink",
"usr/bin",
"/bin",
"--proc",
"/proc",
"--dev",
"/dev",
"--tmpfs",
"/tmp",
"--bind",
"/tmp/custodian-forgejo-successor-r3",
"/work",
"--ro-bind",
"/home/worsch/go/pkg/mod/cache/download",
"/cached",
"--ro-bind",
"/etc/ssl/certs",
"/etc/ssl/certs",
"--ro-bind",
"/etc/resolv.conf",
"/etc/resolv.conf",
"--chdir",
"/work/source",
"--clearenv",
"--ro-bind",
"/tmp/custodian-forgejo-successor-attempt2/modules",
"/work/modules",
"--bind",
"/tmp/custodian-forgejo-successor-attempt2/gocache",
"/work/gocache",
"--dir",
"/run",
"--ro-bind",
"/tmp/custodian-forgejo-successor-r3/descriptor-fixtures",
"/run/forgejo-oidc",
"--bind",
"/tmp/custodian-forgejo-successor-r3/descriptor-fixtures",
"/run/writable-input",
"--setenv",
"PATH",
"/work/go/bin:/usr/bin:/bin",
"--setenv",
"HOME",
"/work/home",
"--setenv",
"GOPATH",
"/work/gopath",
"--setenv",
"GOTOOLCHAIN",
"local",
"--setenv",
"GOPROXY",
"off",
"--setenv",
"GOSUMDB",
"off",
"--setenv",
"GOVCS",
"*:off",
"--setenv",
"GOMODCACHE",
"/work/modules",
"--setenv",
"GOCACHE",
"/work/gocache",
"--setenv",
"GOMAXPROCS",
"4",
"--setenv",
"CGO_ENABLED",
"1",
"--setenv",
"GIT_CONFIG_NOSYSTEM",
"1",
"--setenv",
"GIT_CONFIG_GLOBAL",
"/work/home/test.gitconfig",
"--setenv",
"GIT_TERMINAL_PROMPT",
"0",
"--ro-bind",
"/tmp/custodian-forgejo-postgres-tests-r1-attempt5/auth",
"/work/source/models/auth",
"--bind",
"/tmp/custodian-forgejo-postgres-tests-r1-attempt5",
"/pg-work",
"--dir",
"/run",
"--ro-bind",
"/tmp/custodian-forgejo-postgres-r1-attempt3/socket",
"/run/source-operation-postgres",
"--setenv",
"CUSTODIAN_PG_SOCKET",
"/run/source-operation-postgres",
"--ro-bind",
"/tmp/custodian-forgejo-postgres-tests-r1-attempt5/db",
"/work/source/models/db",
"--",
"go",
"test",
"-p",
"1",
"-json",
"-tags",
"sqlite sqlite_unlock_notify",
"./models/db",
"-run",
"TestSensitiveSQL|TestTracingContext",
"-count=1"
],
"workspace": "/tmp/custodian-forgejo-postgres-tests-r1-attempt5",
"source_pins": {
"access_token.go": "sha256:c3131e03c24356fb09fdd600efd17d8054063534355a4c5a3b769f840a58c8ac",
"access_token_scope.go": "sha256:36173156237cc3c3231da78fc9c7e503391ea29c29496721bf4f6b197ab128d3",
"access_token_scope_test.go": "sha256:738bff8f60339a3b4cbd21c31f52812eacde1435fcf55ea657c2a950c262de7d",
"access_token_test.go": "sha256:0121b13b075e6dadb5f6bf5899ceb815786d386cd75214566545b1a3cbe5e721",
"auth_token.go": "sha256:e652217daeffab3c9918efaab56ba4a0a0e8024071840cd8bb85925fe2568bd9",
"main_test.go": "sha256:1c78be2861df2215936939b085bc2bac431f607731fe68da85cfc9c95a4eac87",
"oauth2.go": "sha256:626c075138a8e1dd22d4814b11c6d6acd04e8aae2443e47017de9a289b8f55ac",
"oauth2_list.go": "sha256:2665b0833370d4cb9d0a30e43bd86625f4f707e26a8e5bef53559816aafb7e91",
"oauth2_test.go": "sha256:66e671311715001e2c8119daa944667b9744b4a701732007c6f4510d1daf40ca",
"session.go": "sha256:25d934eb96d2b540a51b7337650b58123ad4ee7e1c61547e7efc1c36eb12c26d",
"session_test.go": "sha256:cae8e667a88143cf7ce3238e8adc9e87fd7f0bdf1b2c0d9b1736c2de38485659",
"source.go": "sha256:33ec2f66652bcb442cd80c36db0a2ad7305e1ee9c9c610d054720eea8ab18e4c",
"source_operation.go": "sha256:ef1b07ef6cf454015d00cde8588835f5118d829da91eb0303d37184859345a31",
"source_operation_internal_test.go": "sha256:af0f424d3a1fd2b29793b64baa1fa07284fee7ea0b7721c503db4efac0d871cb",
"source_operation_postgres_export_test.go": "sha256:b9d1553144766b15c408295b87506106935abf4ed61460598b58dc81825e808d",
"source_operation_postgres_test.go": "sha256:4a37504e5af00580d114ef1bed5cb32e09e4ec2de5fd3192adef043a4ea5f7fe",
"source_operation_process_test.go": "sha256:40d33b11a01cb659f0bf6f8b545c4d79910e8c082a789060bcbc9cadeee965bd",
"source_operation_test.go": "sha256:77d311bca42f48faf3fbdc15c53582e3d8a6d9108a72ed7bb6172e5b88951428",
"source_test.go": "sha256:1ad3f9b198155193fd8193f50084889cc949192abf64c060a5ce3043f2ccb212",
"two_factor.go": "sha256:d3a6e0b348b225d0fc012fdd5a6275736a1b324ec4cd1c013ae80a12531e0b8e",
"two_factor_test.go": "sha256:6a88cb12d204a3b3de49d584d589b1c5a97bfb795160ae93b87707f64bece4fe",
"twofactor.go": "sha256:905e1679be552346758b34c8ee7c950628d965d8bd3946b9b63c6797f41625d6",
"webauthn.go": "sha256:0f9adac61a225854d579ed71338303a30a5abf26e4c115a0afefaa4fd199200e",
"webauthn_test.go": "sha256:03f3487f7c05566e71399ff548a95400a66ed7afc96bbf31365aa7abb79dfa69"
},
"database_source_pins": {
"collation.go": "sha256:9922312734c5cc2a5474b322b88214586916b320969172708f48c7b6eca40e7d",
"common.go": "sha256:f0c626ebedaedb8681a4f3a3531441c49f3e0d305b20730aa47b267b6e16b3fd",
"consistency.go": "sha256:c771f62de8511bfc307583a4585190aba8b38ca2ac76eab200bc901aa15b7bad",
"context.go": "sha256:d4c4acfcb8987071aecf5cd957b3821c8d2619a2696398d37c2970f2527686f7",
"context_committer_test.go": "sha256:83cf7fbfc32aff358221abadee63e96a803a4136c9851cf696c543dc5176d777",
"context_test.go": "sha256:677f6be23f1c855a154de6078a540b60e17c737becfae6115e55ff6d81c3a937",
"convert.go": "sha256:48e62893b598b767dccbf414c0acffbc26c6cfb6cb22ba79eb5b66dbb6c8193a",
"engine.go": "sha256:d21a5b0b9ca37ac48222b79007467a232abc38edda99b3c5f54f1f4c5ab795e8",
"engine_test.go": "sha256:ec78585da5d8b33deb0b55ba3ffd9d8ff4df704ffd62c2d95c2a6ffddd5bc309",
"error.go": "sha256:ca0ead3529d977f90930974200a0a751366629590dae516cb54245d9c75bb280",
"index.go": "sha256:fdfdaf6da41f317d51665bfc03684074aadf5fb32607d80c15ee9b33fdc89f09",
"index_test.go": "sha256:d46ea9d96fc9b51e477ebecb5cfa0e15fc8e13a00c5c84ce620dd23e73663558",
"iterate.go": "sha256:0512e2f2a3785daec26f434f6b55c37e8cd590c1b49d2068f42160c424757e28",
"iterate_test.go": "sha256:8b9eb9d391bd99bddf6b3da5744bd80088eb4d8446c7f51dd3299abe1b8a5ebe",
"list.go": "sha256:e23e7056f9dbce52d85ca922fa4eadb834a6ee3a5dbcafe82485038332b798e0",
"list_test.go": "sha256:5bc42a869931470daf503b51bd3dbf5cb092d37d8cc4e03f80a21f564beadf6a",
"log.go": "sha256:6f080111c46868e337d4d6dd16c56a5743c13b86b412df219701030cd1718a01",
"main_test.go": "sha256:d9eb5ba4ab294ebb2c865969479d6d73db21669f24cc5454ac42f6dbd8825ef3",
"name.go": "sha256:e486e89a36103f56af54f5f39a9b166ac0b08800abaccc2857ab324777dda6b5",
"search.go": "sha256:b488e9a93f95d28450929896ce648e67f6772e1cd8662f7a0a1a8988a24dbfa2",
"sensitive_sql.go": "sha256:06a298d0d6e628e6920384d4ddeef449e40c090841ebaa3f6d175725a45ae584",
"sensitive_sql_logging_test.go": "sha256:d924b35d30686473caf29601cf51cc363ba68158cb4ef0981c9e2fc7b03c04b7",
"sensitive_sql_test.go": "sha256:de6353c955047c3311747e4777b9f9b2195e9efb19160b971dd758dfc94cf31b",
"sequence.go": "sha256:c0e4c7fbaa93961d9711143cfcf4bbb32f197985d21b77424946fbe3a39b38eb",
"sql_postgres_with_schema.go": "sha256:e5941e859ada7831b400fd3143e58f91b1058cb32779d6a4466af01617cf6e7a",
"tracing_context_test.go": "sha256:612b60c67a2be7e2da9173b95d5ef5abd7b9e1e377360828e39a622610bba070"
},
"original_composite_patch": "sha256:15cb7f13b1b1d1095cc344176ca337f705333a436a70ae803fcfd3d7f802ccf4",
"runtime": "custodian-forgejo-pg-96ce905f445a",
"image_id": "sha256:57c72fd2a128e416c7fcc499958864df5301e940bca0a56f58fddf30ffc07777",
"controlled_mutation": {
"mutation": "none"
},
"network": "disabled; only the exact disposable database Unix socket is bound",
"production_database": false,
"actual_authenticated_operation": false,
"real_credentials": false,
"test_binary_sha256": "sha256:ea124dc75fa8c4d4063fdd2df57e506c1cd53e3c4478597e2d51b5c214de7569"
}

View file

@ -0,0 +1,42 @@
{"Time":"2026-10-18T01:03:57.707717899Z","Action":"start","Package":"forgejo.org/models/db"}
{"Time":"2026-10-18T01:03:57.90451284Z","Action":"output","Package":"forgejo.org/models/db","Output":"2026/10/18 01:03:57 ...s/storage/storage.go:157:initAttachments() [I] Initialising Attachment storage with type: local\n"}
{"Time":"2026-10-18T01:03:57.904818516Z","Action":"output","Package":"forgejo.org/models/db","Output":"2026/10/18 01:03:57 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata394576552/attachments\n"}
{"Time":"2026-10-18T01:03:57.904834558Z","Action":"output","Package":"forgejo.org/models/db","Output":"2026/10/18 01:03:57 ...s/storage/storage.go:147:initAvatars() [I] Initialising Avatar storage with type: local\n"}
{"Time":"2026-10-18T01:03:57.904843404Z","Action":"output","Package":"forgejo.org/models/db","Output":"2026/10/18 01:03:57 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata394576552/avatars\n"}
{"Time":"2026-10-18T01:03:57.904852114Z","Action":"output","Package":"forgejo.org/models/db","Output":"2026/10/18 01:03:57 ...s/storage/storage.go:173:initRepoAvatars() [I] Initialising Repository Avatar storage with type: local\n"}
{"Time":"2026-10-18T01:03:57.904857885Z","Action":"output","Package":"forgejo.org/models/db","Output":"2026/10/18 01:03:57 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata394576552/repo-avatars\n"}
{"Time":"2026-10-18T01:03:57.904865379Z","Action":"output","Package":"forgejo.org/models/db","Output":"2026/10/18 01:03:57 ...s/storage/storage.go:179:initRepoArchives() [I] Initialising Repository Archive storage with type: local\n"}
{"Time":"2026-10-18T01:03:57.904871429Z","Action":"output","Package":"forgejo.org/models/db","Output":"2026/10/18 01:03:57 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata394576552/repo-archive\n"}
{"Time":"2026-10-18T01:03:57.904877182Z","Action":"output","Package":"forgejo.org/models/db","Output":"2026/10/18 01:03:57 ...s/storage/storage.go:189:initPackages() [I] Initialising Packages storage with type: local\n"}
{"Time":"2026-10-18T01:03:57.904888706Z","Action":"output","Package":"forgejo.org/models/db","Output":"2026/10/18 01:03:57 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata394576552/packages\n"}
{"Time":"2026-10-18T01:03:57.904907688Z","Action":"output","Package":"forgejo.org/models/db","Output":"2026/10/18 01:03:57 ...s/storage/storage.go:200:initActions() [I] Initialising Actions storage with type: local\n"}
{"Time":"2026-10-18T01:03:57.904913946Z","Action":"output","Package":"forgejo.org/models/db","Output":"2026/10/18 01:03:57 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata394576552/actions_log\n"}
{"Time":"2026-10-18T01:03:57.904919554Z","Action":"output","Package":"forgejo.org/models/db","Output":"2026/10/18 01:03:57 ...s/storage/storage.go:204:initActions() [I] Initialising ActionsArtifacts storage with type: local\n"}
{"Time":"2026-10-18T01:03:57.904926516Z","Action":"output","Package":"forgejo.org/models/db","Output":"2026/10/18 01:03:57 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/go-build1720325847/b001/data/actions_artifacts\n"}
{"Time":"2026-10-18T01:03:58.002092733Z","Action":"run","Package":"forgejo.org/models/db","Test":"TestSensitiveSQLLoggingChecksUnderlyingEngine"}
{"Time":"2026-10-18T01:03:58.00213423Z","Action":"output","Package":"forgejo.org/models/db","Test":"TestSensitiveSQLLoggingChecksUnderlyingEngine","Output":"=== RUN TestSensitiveSQLLoggingChecksUnderlyingEngine\n"}
{"Time":"2026-10-18T01:03:58.002239173Z","Action":"run","Package":"forgejo.org/models/db","Test":"TestSensitiveSQLLoggingChecksUnderlyingEngine/engine"}
{"Time":"2026-10-18T01:03:58.002249867Z","Action":"output","Package":"forgejo.org/models/db","Test":"TestSensitiveSQLLoggingChecksUnderlyingEngine/engine","Output":"=== RUN TestSensitiveSQLLoggingChecksUnderlyingEngine/engine\n"}
{"Time":"2026-10-18T01:03:58.002337939Z","Action":"output","Package":"forgejo.org/models/db","Test":"TestSensitiveSQLLoggingChecksUnderlyingEngine/engine","Output":"--- PASS: TestSensitiveSQLLoggingChecksUnderlyingEngine/engine (0.00s)\n"}
{"Time":"2026-10-18T01:03:58.002352592Z","Action":"pass","Package":"forgejo.org/models/db","Test":"TestSensitiveSQLLoggingChecksUnderlyingEngine/engine","Elapsed":0}
{"Time":"2026-10-18T01:03:58.002396902Z","Action":"run","Package":"forgejo.org/models/db","Test":"TestSensitiveSQLLoggingChecksUnderlyingEngine/session"}
{"Time":"2026-10-18T01:03:58.002403683Z","Action":"output","Package":"forgejo.org/models/db","Test":"TestSensitiveSQLLoggingChecksUnderlyingEngine/session","Output":"=== RUN TestSensitiveSQLLoggingChecksUnderlyingEngine/session\n"}
{"Time":"2026-10-18T01:03:58.002410203Z","Action":"output","Package":"forgejo.org/models/db","Test":"TestSensitiveSQLLoggingChecksUnderlyingEngine/session","Output":"--- PASS: TestSensitiveSQLLoggingChecksUnderlyingEngine/session (0.00s)\n"}
{"Time":"2026-10-18T01:03:58.00241996Z","Action":"pass","Package":"forgejo.org/models/db","Test":"TestSensitiveSQLLoggingChecksUnderlyingEngine/session","Elapsed":0}
{"Time":"2026-10-18T01:03:58.002425776Z","Action":"output","Package":"forgejo.org/models/db","Test":"TestSensitiveSQLLoggingChecksUnderlyingEngine","Output":"--- PASS: TestSensitiveSQLLoggingChecksUnderlyingEngine (0.00s)\n"}
{"Time":"2026-10-18T01:03:58.002431222Z","Action":"pass","Package":"forgejo.org/models/db","Test":"TestSensitiveSQLLoggingChecksUnderlyingEngine","Elapsed":0}
{"Time":"2026-10-18T01:03:58.002436497Z","Action":"run","Package":"forgejo.org/models/db","Test":"TestSensitiveSQLHooks"}
{"Time":"2026-10-18T01:03:58.002441123Z","Action":"output","Package":"forgejo.org/models/db","Test":"TestSensitiveSQLHooks","Output":"=== RUN TestSensitiveSQLHooks\n"}
{"Time":"2026-10-18T01:03:58.009355975Z","Action":"output","Package":"forgejo.org/models/db","Test":"TestSensitiveSQLHooks","Output":"--- PASS: TestSensitiveSQLHooks (0.01s)\n"}
{"Time":"2026-10-18T01:03:58.009404442Z","Action":"pass","Package":"forgejo.org/models/db","Test":"TestSensitiveSQLHooks","Elapsed":0.01}
{"Time":"2026-10-18T01:03:58.00947411Z","Action":"run","Package":"forgejo.org/models/db","Test":"TestSensitiveSQLActualContextPropagation"}
{"Time":"2026-10-18T01:03:58.009483434Z","Action":"output","Package":"forgejo.org/models/db","Test":"TestSensitiveSQLActualContextPropagation","Output":"=== RUN TestSensitiveSQLActualContextPropagation\n"}
{"Time":"2026-10-18T01:03:58.011965962Z","Action":"output","Package":"forgejo.org/models/db","Test":"TestSensitiveSQLActualContextPropagation","Output":"--- PASS: TestSensitiveSQLActualContextPropagation (0.00s)\n"}
{"Time":"2026-10-18T01:03:58.012015268Z","Action":"pass","Package":"forgejo.org/models/db","Test":"TestSensitiveSQLActualContextPropagation","Elapsed":0}
{"Time":"2026-10-18T01:03:58.012025927Z","Action":"run","Package":"forgejo.org/models/db","Test":"TestTracingContextSurvivesFollowingHooks"}
{"Time":"2026-10-18T01:03:58.012031031Z","Action":"output","Package":"forgejo.org/models/db","Test":"TestTracingContextSurvivesFollowingHooks","Output":"=== RUN TestTracingContextSurvivesFollowingHooks\n"}
{"Time":"2026-10-18T01:03:58.022381389Z","Action":"output","Package":"forgejo.org/models/db","Test":"TestTracingContextSurvivesFollowingHooks","Output":"--- PASS: TestTracingContextSurvivesFollowingHooks (0.01s)\n"}
{"Time":"2026-10-18T01:03:58.022432489Z","Action":"pass","Package":"forgejo.org/models/db","Test":"TestTracingContextSurvivesFollowingHooks","Elapsed":0.01}
{"Time":"2026-10-18T01:03:58.022458856Z","Action":"output","Package":"forgejo.org/models/db","Output":"PASS\n"}
{"Time":"2026-10-18T01:03:58.053650408Z","Action":"output","Package":"forgejo.org/models/db","Output":"ok \tforgejo.org/models/db\t0.345s\n"}
{"Time":"2026-10-18T01:03:58.053699994Z","Action":"pass","Package":"forgejo.org/models/db","Elapsed":0.346}

View file

@ -0,0 +1,200 @@
{
"action": "prepare",
"returncode": 0,
"expected_returncode": 0,
"outcome_matches": true,
"seconds": 3.93,
"argv": [
"bwrap",
"--unshare-pid",
"--die-with-parent",
"--new-session",
"--unshare-net",
"--ro-bind",
"/usr",
"/usr",
"--ro-bind",
"/lib",
"/lib",
"--ro-bind",
"/lib64",
"/lib64",
"--symlink",
"usr/bin",
"/bin",
"--proc",
"/proc",
"--dev",
"/dev",
"--tmpfs",
"/tmp",
"--bind",
"/tmp/custodian-forgejo-successor-r3",
"/work",
"--ro-bind",
"/home/worsch/go/pkg/mod/cache/download",
"/cached",
"--ro-bind",
"/etc/ssl/certs",
"/etc/ssl/certs",
"--ro-bind",
"/etc/resolv.conf",
"/etc/resolv.conf",
"--chdir",
"/work/source",
"--clearenv",
"--ro-bind",
"/tmp/custodian-forgejo-successor-attempt2/modules",
"/work/modules",
"--bind",
"/tmp/custodian-forgejo-successor-attempt2/gocache",
"/work/gocache",
"--dir",
"/run",
"--ro-bind",
"/tmp/custodian-forgejo-successor-r3/descriptor-fixtures",
"/run/forgejo-oidc",
"--bind",
"/tmp/custodian-forgejo-successor-r3/descriptor-fixtures",
"/run/writable-input",
"--setenv",
"PATH",
"/work/go/bin:/usr/bin:/bin",
"--setenv",
"HOME",
"/work/home",
"--setenv",
"GOPATH",
"/work/gopath",
"--setenv",
"GOTOOLCHAIN",
"local",
"--setenv",
"GOPROXY",
"off",
"--setenv",
"GOSUMDB",
"off",
"--setenv",
"GOVCS",
"*:off",
"--setenv",
"GOMODCACHE",
"/work/modules",
"--setenv",
"GOCACHE",
"/work/gocache",
"--setenv",
"GOMAXPROCS",
"4",
"--setenv",
"CGO_ENABLED",
"1",
"--setenv",
"GIT_CONFIG_NOSYSTEM",
"1",
"--setenv",
"GIT_CONFIG_GLOBAL",
"/work/home/test.gitconfig",
"--setenv",
"GIT_TERMINAL_PROMPT",
"0",
"--ro-bind",
"/tmp/custodian-forgejo-postgres-tests-r1-attempt4/auth",
"/work/source/models/auth",
"--bind",
"/tmp/custodian-forgejo-postgres-tests-r1-attempt4",
"/pg-work",
"--dir",
"/run",
"--ro-bind",
"/tmp/custodian-forgejo-postgres-r1-attempt3/socket",
"/run/source-operation-postgres",
"--setenv",
"CUSTODIAN_PG_SOCKET",
"/run/source-operation-postgres",
"--ro-bind",
"/tmp/custodian-forgejo-postgres-tests-r1-attempt4/db",
"/work/source/models/db",
"--setenv",
"CUSTODIAN_PG_STEP",
"prepare",
"--",
"go",
"tool",
"test2json",
"-t",
"-p",
"forgejo.org/models/auth",
"/pg-work/models-auth.test",
"-test.v",
"-test.run=^TestSourceOperationPostgresProcessRecovery$",
"-test.count=1"
],
"workspace": "/tmp/custodian-forgejo-postgres-tests-r1-attempt4",
"source_pins": {
"access_token.go": "sha256:c3131e03c24356fb09fdd600efd17d8054063534355a4c5a3b769f840a58c8ac",
"access_token_scope.go": "sha256:36173156237cc3c3231da78fc9c7e503391ea29c29496721bf4f6b197ab128d3",
"access_token_scope_test.go": "sha256:738bff8f60339a3b4cbd21c31f52812eacde1435fcf55ea657c2a950c262de7d",
"access_token_test.go": "sha256:0121b13b075e6dadb5f6bf5899ceb815786d386cd75214566545b1a3cbe5e721",
"auth_token.go": "sha256:e652217daeffab3c9918efaab56ba4a0a0e8024071840cd8bb85925fe2568bd9",
"main_test.go": "sha256:1c78be2861df2215936939b085bc2bac431f607731fe68da85cfc9c95a4eac87",
"oauth2.go": "sha256:626c075138a8e1dd22d4814b11c6d6acd04e8aae2443e47017de9a289b8f55ac",
"oauth2_list.go": "sha256:2665b0833370d4cb9d0a30e43bd86625f4f707e26a8e5bef53559816aafb7e91",
"oauth2_test.go": "sha256:66e671311715001e2c8119daa944667b9744b4a701732007c6f4510d1daf40ca",
"session.go": "sha256:25d934eb96d2b540a51b7337650b58123ad4ee7e1c61547e7efc1c36eb12c26d",
"session_test.go": "sha256:cae8e667a88143cf7ce3238e8adc9e87fd7f0bdf1b2c0d9b1736c2de38485659",
"source.go": "sha256:33ec2f66652bcb442cd80c36db0a2ad7305e1ee9c9c610d054720eea8ab18e4c",
"source_operation.go": "sha256:ef1b07ef6cf454015d00cde8588835f5118d829da91eb0303d37184859345a31",
"source_operation_internal_test.go": "sha256:af0f424d3a1fd2b29793b64baa1fa07284fee7ea0b7721c503db4efac0d871cb",
"source_operation_postgres_export_test.go": "sha256:b9d1553144766b15c408295b87506106935abf4ed61460598b58dc81825e808d",
"source_operation_postgres_test.go": "sha256:4a37504e5af00580d114ef1bed5cb32e09e4ec2de5fd3192adef043a4ea5f7fe",
"source_operation_process_test.go": "sha256:40d33b11a01cb659f0bf6f8b545c4d79910e8c082a789060bcbc9cadeee965bd",
"source_operation_test.go": "sha256:77d311bca42f48faf3fbdc15c53582e3d8a6d9108a72ed7bb6172e5b88951428",
"source_test.go": "sha256:1ad3f9b198155193fd8193f50084889cc949192abf64c060a5ce3043f2ccb212",
"two_factor.go": "sha256:d3a6e0b348b225d0fc012fdd5a6275736a1b324ec4cd1c013ae80a12531e0b8e",
"two_factor_test.go": "sha256:6a88cb12d204a3b3de49d584d589b1c5a97bfb795160ae93b87707f64bece4fe",
"twofactor.go": "sha256:905e1679be552346758b34c8ee7c950628d965d8bd3946b9b63c6797f41625d6",
"webauthn.go": "sha256:0f9adac61a225854d579ed71338303a30a5abf26e4c115a0afefaa4fd199200e",
"webauthn_test.go": "sha256:03f3487f7c05566e71399ff548a95400a66ed7afc96bbf31365aa7abb79dfa69"
},
"database_source_pins": {
"collation.go": "sha256:9922312734c5cc2a5474b322b88214586916b320969172708f48c7b6eca40e7d",
"common.go": "sha256:f0c626ebedaedb8681a4f3a3531441c49f3e0d305b20730aa47b267b6e16b3fd",
"consistency.go": "sha256:c771f62de8511bfc307583a4585190aba8b38ca2ac76eab200bc901aa15b7bad",
"context.go": "sha256:d4c4acfcb8987071aecf5cd957b3821c8d2619a2696398d37c2970f2527686f7",
"context_committer_test.go": "sha256:83cf7fbfc32aff358221abadee63e96a803a4136c9851cf696c543dc5176d777",
"context_test.go": "sha256:677f6be23f1c855a154de6078a540b60e17c737becfae6115e55ff6d81c3a937",
"convert.go": "sha256:48e62893b598b767dccbf414c0acffbc26c6cfb6cb22ba79eb5b66dbb6c8193a",
"engine.go": "sha256:d21a5b0b9ca37ac48222b79007467a232abc38edda99b3c5f54f1f4c5ab795e8",
"engine_test.go": "sha256:ec78585da5d8b33deb0b55ba3ffd9d8ff4df704ffd62c2d95c2a6ffddd5bc309",
"error.go": "sha256:ca0ead3529d977f90930974200a0a751366629590dae516cb54245d9c75bb280",
"index.go": "sha256:fdfdaf6da41f317d51665bfc03684074aadf5fb32607d80c15ee9b33fdc89f09",
"index_test.go": "sha256:d46ea9d96fc9b51e477ebecb5cfa0e15fc8e13a00c5c84ce620dd23e73663558",
"iterate.go": "sha256:0512e2f2a3785daec26f434f6b55c37e8cd590c1b49d2068f42160c424757e28",
"iterate_test.go": "sha256:8b9eb9d391bd99bddf6b3da5744bd80088eb4d8446c7f51dd3299abe1b8a5ebe",
"list.go": "sha256:e23e7056f9dbce52d85ca922fa4eadb834a6ee3a5dbcafe82485038332b798e0",
"list_test.go": "sha256:5bc42a869931470daf503b51bd3dbf5cb092d37d8cc4e03f80a21f564beadf6a",
"log.go": "sha256:6f080111c46868e337d4d6dd16c56a5743c13b86b412df219701030cd1718a01",
"main_test.go": "sha256:d9eb5ba4ab294ebb2c865969479d6d73db21669f24cc5454ac42f6dbd8825ef3",
"name.go": "sha256:e486e89a36103f56af54f5f39a9b166ac0b08800abaccc2857ab324777dda6b5",
"search.go": "sha256:b488e9a93f95d28450929896ce648e67f6772e1cd8662f7a0a1a8988a24dbfa2",
"sensitive_sql.go": "sha256:06a298d0d6e628e6920384d4ddeef449e40c090841ebaa3f6d175725a45ae584",
"sensitive_sql_logging_test.go": "sha256:d924b35d30686473caf29601cf51cc363ba68158cb4ef0981c9e2fc7b03c04b7",
"sensitive_sql_test.go": "sha256:de6353c955047c3311747e4777b9f9b2195e9efb19160b971dd758dfc94cf31b",
"sequence.go": "sha256:c0e4c7fbaa93961d9711143cfcf4bbb32f197985d21b77424946fbe3a39b38eb",
"sql_postgres_with_schema.go": "sha256:e5941e859ada7831b400fd3143e58f91b1058cb32779d6a4466af01617cf6e7a",
"tracing_context_test.go": "sha256:53d35e31ae9f318d8f77a323fdc5b18bae804bdc86ccb639f335dfbe59e9b17c"
},
"original_composite_patch": "sha256:15cb7f13b1b1d1095cc344176ca337f705333a436a70ae803fcfd3d7f802ccf4",
"runtime": "custodian-forgejo-pg-96ce905f445a",
"image_id": "sha256:57c72fd2a128e416c7fcc499958864df5301e940bca0a56f58fddf30ffc07777",
"controlled_mutation": {
"mutation": "none"
},
"network": "disabled; only the exact disposable database Unix socket is bound",
"production_database": false,
"actual_authenticated_operation": false,
"real_credentials": false,
"test_binary_sha256": "sha256:ea124dc75fa8c4d4063fdd2df57e506c1cd53e3c4478597e2d51b5c214de7569"
}

View file

@ -0,0 +1,21 @@
{"Time":"2026-10-18T01:01:39.579840247Z","Action":"start","Package":"forgejo.org/models/auth"}
{"Time":"2026-10-18T01:01:39.74732574Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:01:39 ...s/storage/storage.go:157:initAttachments() [I] Initialising Attachment storage with type: local\n"}
{"Time":"2026-10-18T01:01:39.747414668Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:01:39 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata897151525/attachments\n"}
{"Time":"2026-10-18T01:01:39.74742373Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:01:39 ...s/storage/storage.go:147:initAvatars() [I] Initialising Avatar storage with type: local\n"}
{"Time":"2026-10-18T01:01:39.747433811Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:01:39 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata897151525/avatars\n"}
{"Time":"2026-10-18T01:01:39.747439465Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:01:39 ...s/storage/storage.go:173:initRepoAvatars() [I] Initialising Repository Avatar storage with type: local\n"}
{"Time":"2026-10-18T01:01:39.747444542Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:01:39 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata897151525/repo-avatars\n"}
{"Time":"2026-10-18T01:01:39.747449853Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:01:39 ...s/storage/storage.go:179:initRepoArchives() [I] Initialising Repository Archive storage with type: local\n"}
{"Time":"2026-10-18T01:01:39.747454767Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:01:39 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata897151525/repo-archive\n"}
{"Time":"2026-10-18T01:01:39.747459646Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:01:39 ...s/storage/storage.go:189:initPackages() [I] Initialising Packages storage with type: local\n"}
{"Time":"2026-10-18T01:01:39.747464524Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:01:39 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata897151525/packages\n"}
{"Time":"2026-10-18T01:01:39.747469294Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:01:39 ...s/storage/storage.go:200:initActions() [I] Initialising Actions storage with type: local\n"}
{"Time":"2026-10-18T01:01:39.7474741Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:01:39 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata897151525/actions_log\n"}
{"Time":"2026-10-18T01:01:39.747478907Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:01:39 ...s/storage/storage.go:204:initActions() [I] Initialising ActionsArtifacts storage with type: local\n"}
{"Time":"2026-10-18T01:01:39.747483695Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:01:39 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /pg-work/data/actions_artifacts\n"}
{"Time":"2026-10-18T01:01:39.865224725Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgresProcessRecovery"}
{"Time":"2026-10-18T01:01:39.865297791Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgresProcessRecovery","Output":"=== RUN TestSourceOperationPostgresProcessRecovery\n"}
{"Time":"2026-10-18T01:01:43.405402416Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgresProcessRecovery","Output":"--- PASS: TestSourceOperationPostgresProcessRecovery (3.54s)\n"}
{"Time":"2026-10-18T01:01:43.405458737Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgresProcessRecovery","Elapsed":3.54}
{"Time":"2026-10-18T01:01:43.405692672Z","Action":"output","Package":"forgejo.org/models/auth","Output":"PASS\n"}
{"Time":"2026-10-18T01:01:43.431507112Z","Action":"pass","Package":"forgejo.org/models/auth","Elapsed":3.852}

View file

@ -0,0 +1,200 @@
{
"action": "recover-applied",
"returncode": 0,
"expected_returncode": 0,
"outcome_matches": true,
"seconds": 2.27,
"argv": [
"bwrap",
"--unshare-pid",
"--die-with-parent",
"--new-session",
"--unshare-net",
"--ro-bind",
"/usr",
"/usr",
"--ro-bind",
"/lib",
"/lib",
"--ro-bind",
"/lib64",
"/lib64",
"--symlink",
"usr/bin",
"/bin",
"--proc",
"/proc",
"--dev",
"/dev",
"--tmpfs",
"/tmp",
"--bind",
"/tmp/custodian-forgejo-successor-r3",
"/work",
"--ro-bind",
"/home/worsch/go/pkg/mod/cache/download",
"/cached",
"--ro-bind",
"/etc/ssl/certs",
"/etc/ssl/certs",
"--ro-bind",
"/etc/resolv.conf",
"/etc/resolv.conf",
"--chdir",
"/work/source",
"--clearenv",
"--ro-bind",
"/tmp/custodian-forgejo-successor-attempt2/modules",
"/work/modules",
"--bind",
"/tmp/custodian-forgejo-successor-attempt2/gocache",
"/work/gocache",
"--dir",
"/run",
"--ro-bind",
"/tmp/custodian-forgejo-successor-r3/descriptor-fixtures",
"/run/forgejo-oidc",
"--bind",
"/tmp/custodian-forgejo-successor-r3/descriptor-fixtures",
"/run/writable-input",
"--setenv",
"PATH",
"/work/go/bin:/usr/bin:/bin",
"--setenv",
"HOME",
"/work/home",
"--setenv",
"GOPATH",
"/work/gopath",
"--setenv",
"GOTOOLCHAIN",
"local",
"--setenv",
"GOPROXY",
"off",
"--setenv",
"GOSUMDB",
"off",
"--setenv",
"GOVCS",
"*:off",
"--setenv",
"GOMODCACHE",
"/work/modules",
"--setenv",
"GOCACHE",
"/work/gocache",
"--setenv",
"GOMAXPROCS",
"4",
"--setenv",
"CGO_ENABLED",
"1",
"--setenv",
"GIT_CONFIG_NOSYSTEM",
"1",
"--setenv",
"GIT_CONFIG_GLOBAL",
"/work/home/test.gitconfig",
"--setenv",
"GIT_TERMINAL_PROMPT",
"0",
"--ro-bind",
"/tmp/custodian-forgejo-postgres-tests-r1-attempt4/auth",
"/work/source/models/auth",
"--bind",
"/tmp/custodian-forgejo-postgres-tests-r1-attempt4",
"/pg-work",
"--dir",
"/run",
"--ro-bind",
"/tmp/custodian-forgejo-postgres-r1-attempt3/socket",
"/run/source-operation-postgres",
"--setenv",
"CUSTODIAN_PG_SOCKET",
"/run/source-operation-postgres",
"--ro-bind",
"/tmp/custodian-forgejo-postgres-tests-r1-attempt4/db",
"/work/source/models/db",
"--setenv",
"CUSTODIAN_PG_STEP",
"recover-applied",
"--",
"go",
"tool",
"test2json",
"-t",
"-p",
"forgejo.org/models/auth",
"/pg-work/models-auth.test",
"-test.v",
"-test.run=^TestSourceOperationPostgresProcessRecovery$",
"-test.count=1"
],
"workspace": "/tmp/custodian-forgejo-postgres-tests-r1-attempt4",
"source_pins": {
"access_token.go": "sha256:c3131e03c24356fb09fdd600efd17d8054063534355a4c5a3b769f840a58c8ac",
"access_token_scope.go": "sha256:36173156237cc3c3231da78fc9c7e503391ea29c29496721bf4f6b197ab128d3",
"access_token_scope_test.go": "sha256:738bff8f60339a3b4cbd21c31f52812eacde1435fcf55ea657c2a950c262de7d",
"access_token_test.go": "sha256:0121b13b075e6dadb5f6bf5899ceb815786d386cd75214566545b1a3cbe5e721",
"auth_token.go": "sha256:e652217daeffab3c9918efaab56ba4a0a0e8024071840cd8bb85925fe2568bd9",
"main_test.go": "sha256:1c78be2861df2215936939b085bc2bac431f607731fe68da85cfc9c95a4eac87",
"oauth2.go": "sha256:626c075138a8e1dd22d4814b11c6d6acd04e8aae2443e47017de9a289b8f55ac",
"oauth2_list.go": "sha256:2665b0833370d4cb9d0a30e43bd86625f4f707e26a8e5bef53559816aafb7e91",
"oauth2_test.go": "sha256:66e671311715001e2c8119daa944667b9744b4a701732007c6f4510d1daf40ca",
"session.go": "sha256:25d934eb96d2b540a51b7337650b58123ad4ee7e1c61547e7efc1c36eb12c26d",
"session_test.go": "sha256:cae8e667a88143cf7ce3238e8adc9e87fd7f0bdf1b2c0d9b1736c2de38485659",
"source.go": "sha256:33ec2f66652bcb442cd80c36db0a2ad7305e1ee9c9c610d054720eea8ab18e4c",
"source_operation.go": "sha256:ef1b07ef6cf454015d00cde8588835f5118d829da91eb0303d37184859345a31",
"source_operation_internal_test.go": "sha256:af0f424d3a1fd2b29793b64baa1fa07284fee7ea0b7721c503db4efac0d871cb",
"source_operation_postgres_export_test.go": "sha256:b9d1553144766b15c408295b87506106935abf4ed61460598b58dc81825e808d",
"source_operation_postgres_test.go": "sha256:4a37504e5af00580d114ef1bed5cb32e09e4ec2de5fd3192adef043a4ea5f7fe",
"source_operation_process_test.go": "sha256:40d33b11a01cb659f0bf6f8b545c4d79910e8c082a789060bcbc9cadeee965bd",
"source_operation_test.go": "sha256:77d311bca42f48faf3fbdc15c53582e3d8a6d9108a72ed7bb6172e5b88951428",
"source_test.go": "sha256:1ad3f9b198155193fd8193f50084889cc949192abf64c060a5ce3043f2ccb212",
"two_factor.go": "sha256:d3a6e0b348b225d0fc012fdd5a6275736a1b324ec4cd1c013ae80a12531e0b8e",
"two_factor_test.go": "sha256:6a88cb12d204a3b3de49d584d589b1c5a97bfb795160ae93b87707f64bece4fe",
"twofactor.go": "sha256:905e1679be552346758b34c8ee7c950628d965d8bd3946b9b63c6797f41625d6",
"webauthn.go": "sha256:0f9adac61a225854d579ed71338303a30a5abf26e4c115a0afefaa4fd199200e",
"webauthn_test.go": "sha256:03f3487f7c05566e71399ff548a95400a66ed7afc96bbf31365aa7abb79dfa69"
},
"database_source_pins": {
"collation.go": "sha256:9922312734c5cc2a5474b322b88214586916b320969172708f48c7b6eca40e7d",
"common.go": "sha256:f0c626ebedaedb8681a4f3a3531441c49f3e0d305b20730aa47b267b6e16b3fd",
"consistency.go": "sha256:c771f62de8511bfc307583a4585190aba8b38ca2ac76eab200bc901aa15b7bad",
"context.go": "sha256:d4c4acfcb8987071aecf5cd957b3821c8d2619a2696398d37c2970f2527686f7",
"context_committer_test.go": "sha256:83cf7fbfc32aff358221abadee63e96a803a4136c9851cf696c543dc5176d777",
"context_test.go": "sha256:677f6be23f1c855a154de6078a540b60e17c737becfae6115e55ff6d81c3a937",
"convert.go": "sha256:48e62893b598b767dccbf414c0acffbc26c6cfb6cb22ba79eb5b66dbb6c8193a",
"engine.go": "sha256:d21a5b0b9ca37ac48222b79007467a232abc38edda99b3c5f54f1f4c5ab795e8",
"engine_test.go": "sha256:ec78585da5d8b33deb0b55ba3ffd9d8ff4df704ffd62c2d95c2a6ffddd5bc309",
"error.go": "sha256:ca0ead3529d977f90930974200a0a751366629590dae516cb54245d9c75bb280",
"index.go": "sha256:fdfdaf6da41f317d51665bfc03684074aadf5fb32607d80c15ee9b33fdc89f09",
"index_test.go": "sha256:d46ea9d96fc9b51e477ebecb5cfa0e15fc8e13a00c5c84ce620dd23e73663558",
"iterate.go": "sha256:0512e2f2a3785daec26f434f6b55c37e8cd590c1b49d2068f42160c424757e28",
"iterate_test.go": "sha256:8b9eb9d391bd99bddf6b3da5744bd80088eb4d8446c7f51dd3299abe1b8a5ebe",
"list.go": "sha256:e23e7056f9dbce52d85ca922fa4eadb834a6ee3a5dbcafe82485038332b798e0",
"list_test.go": "sha256:5bc42a869931470daf503b51bd3dbf5cb092d37d8cc4e03f80a21f564beadf6a",
"log.go": "sha256:6f080111c46868e337d4d6dd16c56a5743c13b86b412df219701030cd1718a01",
"main_test.go": "sha256:d9eb5ba4ab294ebb2c865969479d6d73db21669f24cc5454ac42f6dbd8825ef3",
"name.go": "sha256:e486e89a36103f56af54f5f39a9b166ac0b08800abaccc2857ab324777dda6b5",
"search.go": "sha256:b488e9a93f95d28450929896ce648e67f6772e1cd8662f7a0a1a8988a24dbfa2",
"sensitive_sql.go": "sha256:06a298d0d6e628e6920384d4ddeef449e40c090841ebaa3f6d175725a45ae584",
"sensitive_sql_logging_test.go": "sha256:d924b35d30686473caf29601cf51cc363ba68158cb4ef0981c9e2fc7b03c04b7",
"sensitive_sql_test.go": "sha256:de6353c955047c3311747e4777b9f9b2195e9efb19160b971dd758dfc94cf31b",
"sequence.go": "sha256:c0e4c7fbaa93961d9711143cfcf4bbb32f197985d21b77424946fbe3a39b38eb",
"sql_postgres_with_schema.go": "sha256:e5941e859ada7831b400fd3143e58f91b1058cb32779d6a4466af01617cf6e7a",
"tracing_context_test.go": "sha256:53d35e31ae9f318d8f77a323fdc5b18bae804bdc86ccb639f335dfbe59e9b17c"
},
"original_composite_patch": "sha256:15cb7f13b1b1d1095cc344176ca337f705333a436a70ae803fcfd3d7f802ccf4",
"runtime": "custodian-forgejo-pg-96ce905f445a",
"image_id": "sha256:57c72fd2a128e416c7fcc499958864df5301e940bca0a56f58fddf30ffc07777",
"controlled_mutation": {
"mutation": "none"
},
"network": "disabled; only the exact disposable database Unix socket is bound",
"production_database": false,
"actual_authenticated_operation": false,
"real_credentials": false,
"test_binary_sha256": "sha256:ea124dc75fa8c4d4063fdd2df57e506c1cd53e3c4478597e2d51b5c214de7569"
}

View file

@ -0,0 +1,21 @@
{"Time":"2026-10-18T01:04:08.08440522Z","Action":"start","Package":"forgejo.org/models/auth"}
{"Time":"2026-10-18T01:04:08.227331233Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:04:08 ...s/storage/storage.go:157:initAttachments() [I] Initialising Attachment storage with type: local\n"}
{"Time":"2026-10-18T01:04:08.227448196Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:04:08 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata1812313322/attachments\n"}
{"Time":"2026-10-18T01:04:08.227457303Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:04:08 ...s/storage/storage.go:147:initAvatars() [I] Initialising Avatar storage with type: local\n"}
{"Time":"2026-10-18T01:04:08.227472362Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:04:08 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata1812313322/avatars\n"}
{"Time":"2026-10-18T01:04:08.22747954Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:04:08 ...s/storage/storage.go:173:initRepoAvatars() [I] Initialising Repository Avatar storage with type: local\n"}
{"Time":"2026-10-18T01:04:08.227486167Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:04:08 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata1812313322/repo-avatars\n"}
{"Time":"2026-10-18T01:04:08.22749266Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:04:08 ...s/storage/storage.go:179:initRepoArchives() [I] Initialising Repository Archive storage with type: local\n"}
{"Time":"2026-10-18T01:04:08.227499026Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:04:08 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata1812313322/repo-archive\n"}
{"Time":"2026-10-18T01:04:08.227505455Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:04:08 ...s/storage/storage.go:189:initPackages() [I] Initialising Packages storage with type: local\n"}
{"Time":"2026-10-18T01:04:08.227511695Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:04:08 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata1812313322/packages\n"}
{"Time":"2026-10-18T01:04:08.227528314Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:04:08 ...s/storage/storage.go:200:initActions() [I] Initialising Actions storage with type: local\n"}
{"Time":"2026-10-18T01:04:08.22753468Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:04:08 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata1812313322/actions_log\n"}
{"Time":"2026-10-18T01:04:08.227543706Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:04:08 ...s/storage/storage.go:204:initActions() [I] Initialising ActionsArtifacts storage with type: local\n"}
{"Time":"2026-10-18T01:04:08.227550036Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:04:08 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /pg-work/data/actions_artifacts\n"}
{"Time":"2026-10-18T01:04:08.330506549Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgresProcessRecovery"}
{"Time":"2026-10-18T01:04:08.330564765Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgresProcessRecovery","Output":"=== RUN TestSourceOperationPostgresProcessRecovery\n"}
{"Time":"2026-10-18T01:04:10.289864261Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgresProcessRecovery","Output":"--- PASS: TestSourceOperationPostgresProcessRecovery (1.96s)\n"}
{"Time":"2026-10-18T01:04:10.289918455Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgresProcessRecovery","Elapsed":1.96}
{"Time":"2026-10-18T01:04:10.28996263Z","Action":"output","Package":"forgejo.org/models/auth","Output":"PASS\n"}
{"Time":"2026-10-18T01:04:10.314327337Z","Action":"pass","Package":"forgejo.org/models/auth","Elapsed":2.23}

View file

@ -0,0 +1,200 @@
{
"action": "recover-inverse",
"returncode": 0,
"expected_returncode": 0,
"outcome_matches": true,
"seconds": 4.77,
"argv": [
"bwrap",
"--unshare-pid",
"--die-with-parent",
"--new-session",
"--unshare-net",
"--ro-bind",
"/usr",
"/usr",
"--ro-bind",
"/lib",
"/lib",
"--ro-bind",
"/lib64",
"/lib64",
"--symlink",
"usr/bin",
"/bin",
"--proc",
"/proc",
"--dev",
"/dev",
"--tmpfs",
"/tmp",
"--bind",
"/tmp/custodian-forgejo-successor-r3",
"/work",
"--ro-bind",
"/home/worsch/go/pkg/mod/cache/download",
"/cached",
"--ro-bind",
"/etc/ssl/certs",
"/etc/ssl/certs",
"--ro-bind",
"/etc/resolv.conf",
"/etc/resolv.conf",
"--chdir",
"/work/source",
"--clearenv",
"--ro-bind",
"/tmp/custodian-forgejo-successor-attempt2/modules",
"/work/modules",
"--bind",
"/tmp/custodian-forgejo-successor-attempt2/gocache",
"/work/gocache",
"--dir",
"/run",
"--ro-bind",
"/tmp/custodian-forgejo-successor-r3/descriptor-fixtures",
"/run/forgejo-oidc",
"--bind",
"/tmp/custodian-forgejo-successor-r3/descriptor-fixtures",
"/run/writable-input",
"--setenv",
"PATH",
"/work/go/bin:/usr/bin:/bin",
"--setenv",
"HOME",
"/work/home",
"--setenv",
"GOPATH",
"/work/gopath",
"--setenv",
"GOTOOLCHAIN",
"local",
"--setenv",
"GOPROXY",
"off",
"--setenv",
"GOSUMDB",
"off",
"--setenv",
"GOVCS",
"*:off",
"--setenv",
"GOMODCACHE",
"/work/modules",
"--setenv",
"GOCACHE",
"/work/gocache",
"--setenv",
"GOMAXPROCS",
"4",
"--setenv",
"CGO_ENABLED",
"1",
"--setenv",
"GIT_CONFIG_NOSYSTEM",
"1",
"--setenv",
"GIT_CONFIG_GLOBAL",
"/work/home/test.gitconfig",
"--setenv",
"GIT_TERMINAL_PROMPT",
"0",
"--ro-bind",
"/tmp/custodian-forgejo-postgres-tests-r1-attempt4/auth",
"/work/source/models/auth",
"--bind",
"/tmp/custodian-forgejo-postgres-tests-r1-attempt4",
"/pg-work",
"--dir",
"/run",
"--ro-bind",
"/tmp/custodian-forgejo-postgres-r1-attempt3/socket",
"/run/source-operation-postgres",
"--setenv",
"CUSTODIAN_PG_SOCKET",
"/run/source-operation-postgres",
"--ro-bind",
"/tmp/custodian-forgejo-postgres-tests-r1-attempt4/db",
"/work/source/models/db",
"--setenv",
"CUSTODIAN_PG_STEP",
"recover-inverse",
"--",
"go",
"tool",
"test2json",
"-t",
"-p",
"forgejo.org/models/auth",
"/pg-work/models-auth.test",
"-test.v",
"-test.run=^TestSourceOperationPostgresProcessRecovery$",
"-test.count=1"
],
"workspace": "/tmp/custodian-forgejo-postgres-tests-r1-attempt4",
"source_pins": {
"access_token.go": "sha256:c3131e03c24356fb09fdd600efd17d8054063534355a4c5a3b769f840a58c8ac",
"access_token_scope.go": "sha256:36173156237cc3c3231da78fc9c7e503391ea29c29496721bf4f6b197ab128d3",
"access_token_scope_test.go": "sha256:738bff8f60339a3b4cbd21c31f52812eacde1435fcf55ea657c2a950c262de7d",
"access_token_test.go": "sha256:0121b13b075e6dadb5f6bf5899ceb815786d386cd75214566545b1a3cbe5e721",
"auth_token.go": "sha256:e652217daeffab3c9918efaab56ba4a0a0e8024071840cd8bb85925fe2568bd9",
"main_test.go": "sha256:1c78be2861df2215936939b085bc2bac431f607731fe68da85cfc9c95a4eac87",
"oauth2.go": "sha256:626c075138a8e1dd22d4814b11c6d6acd04e8aae2443e47017de9a289b8f55ac",
"oauth2_list.go": "sha256:2665b0833370d4cb9d0a30e43bd86625f4f707e26a8e5bef53559816aafb7e91",
"oauth2_test.go": "sha256:66e671311715001e2c8119daa944667b9744b4a701732007c6f4510d1daf40ca",
"session.go": "sha256:25d934eb96d2b540a51b7337650b58123ad4ee7e1c61547e7efc1c36eb12c26d",
"session_test.go": "sha256:cae8e667a88143cf7ce3238e8adc9e87fd7f0bdf1b2c0d9b1736c2de38485659",
"source.go": "sha256:33ec2f66652bcb442cd80c36db0a2ad7305e1ee9c9c610d054720eea8ab18e4c",
"source_operation.go": "sha256:ef1b07ef6cf454015d00cde8588835f5118d829da91eb0303d37184859345a31",
"source_operation_internal_test.go": "sha256:af0f424d3a1fd2b29793b64baa1fa07284fee7ea0b7721c503db4efac0d871cb",
"source_operation_postgres_export_test.go": "sha256:b9d1553144766b15c408295b87506106935abf4ed61460598b58dc81825e808d",
"source_operation_postgres_test.go": "sha256:4a37504e5af00580d114ef1bed5cb32e09e4ec2de5fd3192adef043a4ea5f7fe",
"source_operation_process_test.go": "sha256:40d33b11a01cb659f0bf6f8b545c4d79910e8c082a789060bcbc9cadeee965bd",
"source_operation_test.go": "sha256:77d311bca42f48faf3fbdc15c53582e3d8a6d9108a72ed7bb6172e5b88951428",
"source_test.go": "sha256:1ad3f9b198155193fd8193f50084889cc949192abf64c060a5ce3043f2ccb212",
"two_factor.go": "sha256:d3a6e0b348b225d0fc012fdd5a6275736a1b324ec4cd1c013ae80a12531e0b8e",
"two_factor_test.go": "sha256:6a88cb12d204a3b3de49d584d589b1c5a97bfb795160ae93b87707f64bece4fe",
"twofactor.go": "sha256:905e1679be552346758b34c8ee7c950628d965d8bd3946b9b63c6797f41625d6",
"webauthn.go": "sha256:0f9adac61a225854d579ed71338303a30a5abf26e4c115a0afefaa4fd199200e",
"webauthn_test.go": "sha256:03f3487f7c05566e71399ff548a95400a66ed7afc96bbf31365aa7abb79dfa69"
},
"database_source_pins": {
"collation.go": "sha256:9922312734c5cc2a5474b322b88214586916b320969172708f48c7b6eca40e7d",
"common.go": "sha256:f0c626ebedaedb8681a4f3a3531441c49f3e0d305b20730aa47b267b6e16b3fd",
"consistency.go": "sha256:c771f62de8511bfc307583a4585190aba8b38ca2ac76eab200bc901aa15b7bad",
"context.go": "sha256:d4c4acfcb8987071aecf5cd957b3821c8d2619a2696398d37c2970f2527686f7",
"context_committer_test.go": "sha256:83cf7fbfc32aff358221abadee63e96a803a4136c9851cf696c543dc5176d777",
"context_test.go": "sha256:677f6be23f1c855a154de6078a540b60e17c737becfae6115e55ff6d81c3a937",
"convert.go": "sha256:48e62893b598b767dccbf414c0acffbc26c6cfb6cb22ba79eb5b66dbb6c8193a",
"engine.go": "sha256:d21a5b0b9ca37ac48222b79007467a232abc38edda99b3c5f54f1f4c5ab795e8",
"engine_test.go": "sha256:ec78585da5d8b33deb0b55ba3ffd9d8ff4df704ffd62c2d95c2a6ffddd5bc309",
"error.go": "sha256:ca0ead3529d977f90930974200a0a751366629590dae516cb54245d9c75bb280",
"index.go": "sha256:fdfdaf6da41f317d51665bfc03684074aadf5fb32607d80c15ee9b33fdc89f09",
"index_test.go": "sha256:d46ea9d96fc9b51e477ebecb5cfa0e15fc8e13a00c5c84ce620dd23e73663558",
"iterate.go": "sha256:0512e2f2a3785daec26f434f6b55c37e8cd590c1b49d2068f42160c424757e28",
"iterate_test.go": "sha256:8b9eb9d391bd99bddf6b3da5744bd80088eb4d8446c7f51dd3299abe1b8a5ebe",
"list.go": "sha256:e23e7056f9dbce52d85ca922fa4eadb834a6ee3a5dbcafe82485038332b798e0",
"list_test.go": "sha256:5bc42a869931470daf503b51bd3dbf5cb092d37d8cc4e03f80a21f564beadf6a",
"log.go": "sha256:6f080111c46868e337d4d6dd16c56a5743c13b86b412df219701030cd1718a01",
"main_test.go": "sha256:d9eb5ba4ab294ebb2c865969479d6d73db21669f24cc5454ac42f6dbd8825ef3",
"name.go": "sha256:e486e89a36103f56af54f5f39a9b166ac0b08800abaccc2857ab324777dda6b5",
"search.go": "sha256:b488e9a93f95d28450929896ce648e67f6772e1cd8662f7a0a1a8988a24dbfa2",
"sensitive_sql.go": "sha256:06a298d0d6e628e6920384d4ddeef449e40c090841ebaa3f6d175725a45ae584",
"sensitive_sql_logging_test.go": "sha256:d924b35d30686473caf29601cf51cc363ba68158cb4ef0981c9e2fc7b03c04b7",
"sensitive_sql_test.go": "sha256:de6353c955047c3311747e4777b9f9b2195e9efb19160b971dd758dfc94cf31b",
"sequence.go": "sha256:c0e4c7fbaa93961d9711143cfcf4bbb32f197985d21b77424946fbe3a39b38eb",
"sql_postgres_with_schema.go": "sha256:e5941e859ada7831b400fd3143e58f91b1058cb32779d6a4466af01617cf6e7a",
"tracing_context_test.go": "sha256:53d35e31ae9f318d8f77a323fdc5b18bae804bdc86ccb639f335dfbe59e9b17c"
},
"original_composite_patch": "sha256:15cb7f13b1b1d1095cc344176ca337f705333a436a70ae803fcfd3d7f802ccf4",
"runtime": "custodian-forgejo-pg-96ce905f445a",
"image_id": "sha256:57c72fd2a128e416c7fcc499958864df5301e940bca0a56f58fddf30ffc07777",
"controlled_mutation": {
"mutation": "none"
},
"network": "disabled; only the exact disposable database Unix socket is bound",
"production_database": false,
"actual_authenticated_operation": false,
"real_credentials": false,
"test_binary_sha256": "sha256:ea124dc75fa8c4d4063fdd2df57e506c1cd53e3c4478597e2d51b5c214de7569"
}

View file

@ -0,0 +1,21 @@
{"Time":"2026-10-18T01:04:15.038955865Z","Action":"start","Package":"forgejo.org/models/auth"}
{"Time":"2026-10-18T01:04:15.397703648Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:04:15 ...s/storage/storage.go:157:initAttachments() [I] Initialising Attachment storage with type: local\n"}
{"Time":"2026-10-18T01:04:15.397820971Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:04:15 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata153111776/attachments\n"}
{"Time":"2026-10-18T01:04:15.397833126Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:04:15 ...s/storage/storage.go:147:initAvatars() [I] Initialising Avatar storage with type: local\n"}
{"Time":"2026-10-18T01:04:15.397848681Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:04:15 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata153111776/avatars\n"}
{"Time":"2026-10-18T01:04:15.397862757Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:04:15 ...s/storage/storage.go:173:initRepoAvatars() [I] Initialising Repository Avatar storage with type: local\n"}
{"Time":"2026-10-18T01:04:15.397871035Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:04:15 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata153111776/repo-avatars\n"}
{"Time":"2026-10-18T01:04:15.397877644Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:04:15 ...s/storage/storage.go:179:initRepoArchives() [I] Initialising Repository Archive storage with type: local\n"}
{"Time":"2026-10-18T01:04:15.397884588Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:04:15 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata153111776/repo-archive\n"}
{"Time":"2026-10-18T01:04:15.397891432Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:04:15 ...s/storage/storage.go:189:initPackages() [I] Initialising Packages storage with type: local\n"}
{"Time":"2026-10-18T01:04:15.397898267Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:04:15 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata153111776/packages\n"}
{"Time":"2026-10-18T01:04:15.39791173Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:04:15 ...s/storage/storage.go:200:initActions() [I] Initialising Actions storage with type: local\n"}
{"Time":"2026-10-18T01:04:15.397919268Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:04:15 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata153111776/actions_log\n"}
{"Time":"2026-10-18T01:04:15.398162834Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:04:15 ...s/storage/storage.go:204:initActions() [I] Initialising ActionsArtifacts storage with type: local\n"}
{"Time":"2026-10-18T01:04:15.398206793Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:04:15 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /pg-work/data/actions_artifacts\n"}
{"Time":"2026-10-18T01:04:15.582049278Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgresProcessRecovery"}
{"Time":"2026-10-18T01:04:15.582213644Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgresProcessRecovery","Output":"=== RUN TestSourceOperationPostgresProcessRecovery\n"}
{"Time":"2026-10-18T01:04:19.683251057Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgresProcessRecovery","Output":"--- PASS: TestSourceOperationPostgresProcessRecovery (4.10s)\n"}
{"Time":"2026-10-18T01:04:19.683317235Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgresProcessRecovery","Elapsed":4.1}
{"Time":"2026-10-18T01:04:19.683355432Z","Action":"output","Package":"forgejo.org/models/auth","Output":"PASS\n"}
{"Time":"2026-10-18T01:04:19.717408656Z","Action":"pass","Package":"forgejo.org/models/auth","Elapsed":4.678}

View file

@ -0,0 +1,200 @@
{
"action": "recover-prepared",
"returncode": 0,
"expected_returncode": 0,
"outcome_matches": true,
"seconds": 3.17,
"argv": [
"bwrap",
"--unshare-pid",
"--die-with-parent",
"--new-session",
"--unshare-net",
"--ro-bind",
"/usr",
"/usr",
"--ro-bind",
"/lib",
"/lib",
"--ro-bind",
"/lib64",
"/lib64",
"--symlink",
"usr/bin",
"/bin",
"--proc",
"/proc",
"--dev",
"/dev",
"--tmpfs",
"/tmp",
"--bind",
"/tmp/custodian-forgejo-successor-r3",
"/work",
"--ro-bind",
"/home/worsch/go/pkg/mod/cache/download",
"/cached",
"--ro-bind",
"/etc/ssl/certs",
"/etc/ssl/certs",
"--ro-bind",
"/etc/resolv.conf",
"/etc/resolv.conf",
"--chdir",
"/work/source",
"--clearenv",
"--ro-bind",
"/tmp/custodian-forgejo-successor-attempt2/modules",
"/work/modules",
"--bind",
"/tmp/custodian-forgejo-successor-attempt2/gocache",
"/work/gocache",
"--dir",
"/run",
"--ro-bind",
"/tmp/custodian-forgejo-successor-r3/descriptor-fixtures",
"/run/forgejo-oidc",
"--bind",
"/tmp/custodian-forgejo-successor-r3/descriptor-fixtures",
"/run/writable-input",
"--setenv",
"PATH",
"/work/go/bin:/usr/bin:/bin",
"--setenv",
"HOME",
"/work/home",
"--setenv",
"GOPATH",
"/work/gopath",
"--setenv",
"GOTOOLCHAIN",
"local",
"--setenv",
"GOPROXY",
"off",
"--setenv",
"GOSUMDB",
"off",
"--setenv",
"GOVCS",
"*:off",
"--setenv",
"GOMODCACHE",
"/work/modules",
"--setenv",
"GOCACHE",
"/work/gocache",
"--setenv",
"GOMAXPROCS",
"4",
"--setenv",
"CGO_ENABLED",
"1",
"--setenv",
"GIT_CONFIG_NOSYSTEM",
"1",
"--setenv",
"GIT_CONFIG_GLOBAL",
"/work/home/test.gitconfig",
"--setenv",
"GIT_TERMINAL_PROMPT",
"0",
"--ro-bind",
"/tmp/custodian-forgejo-postgres-tests-r1-attempt4/auth",
"/work/source/models/auth",
"--bind",
"/tmp/custodian-forgejo-postgres-tests-r1-attempt4",
"/pg-work",
"--dir",
"/run",
"--ro-bind",
"/tmp/custodian-forgejo-postgres-r1-attempt3/socket",
"/run/source-operation-postgres",
"--setenv",
"CUSTODIAN_PG_SOCKET",
"/run/source-operation-postgres",
"--ro-bind",
"/tmp/custodian-forgejo-postgres-tests-r1-attempt4/db",
"/work/source/models/db",
"--setenv",
"CUSTODIAN_PG_STEP",
"recover-prepared",
"--",
"go",
"tool",
"test2json",
"-t",
"-p",
"forgejo.org/models/auth",
"/pg-work/models-auth.test",
"-test.v",
"-test.run=^TestSourceOperationPostgresProcessRecovery$",
"-test.count=1"
],
"workspace": "/tmp/custodian-forgejo-postgres-tests-r1-attempt4",
"source_pins": {
"access_token.go": "sha256:c3131e03c24356fb09fdd600efd17d8054063534355a4c5a3b769f840a58c8ac",
"access_token_scope.go": "sha256:36173156237cc3c3231da78fc9c7e503391ea29c29496721bf4f6b197ab128d3",
"access_token_scope_test.go": "sha256:738bff8f60339a3b4cbd21c31f52812eacde1435fcf55ea657c2a950c262de7d",
"access_token_test.go": "sha256:0121b13b075e6dadb5f6bf5899ceb815786d386cd75214566545b1a3cbe5e721",
"auth_token.go": "sha256:e652217daeffab3c9918efaab56ba4a0a0e8024071840cd8bb85925fe2568bd9",
"main_test.go": "sha256:1c78be2861df2215936939b085bc2bac431f607731fe68da85cfc9c95a4eac87",
"oauth2.go": "sha256:626c075138a8e1dd22d4814b11c6d6acd04e8aae2443e47017de9a289b8f55ac",
"oauth2_list.go": "sha256:2665b0833370d4cb9d0a30e43bd86625f4f707e26a8e5bef53559816aafb7e91",
"oauth2_test.go": "sha256:66e671311715001e2c8119daa944667b9744b4a701732007c6f4510d1daf40ca",
"session.go": "sha256:25d934eb96d2b540a51b7337650b58123ad4ee7e1c61547e7efc1c36eb12c26d",
"session_test.go": "sha256:cae8e667a88143cf7ce3238e8adc9e87fd7f0bdf1b2c0d9b1736c2de38485659",
"source.go": "sha256:33ec2f66652bcb442cd80c36db0a2ad7305e1ee9c9c610d054720eea8ab18e4c",
"source_operation.go": "sha256:ef1b07ef6cf454015d00cde8588835f5118d829da91eb0303d37184859345a31",
"source_operation_internal_test.go": "sha256:af0f424d3a1fd2b29793b64baa1fa07284fee7ea0b7721c503db4efac0d871cb",
"source_operation_postgres_export_test.go": "sha256:b9d1553144766b15c408295b87506106935abf4ed61460598b58dc81825e808d",
"source_operation_postgres_test.go": "sha256:4a37504e5af00580d114ef1bed5cb32e09e4ec2de5fd3192adef043a4ea5f7fe",
"source_operation_process_test.go": "sha256:40d33b11a01cb659f0bf6f8b545c4d79910e8c082a789060bcbc9cadeee965bd",
"source_operation_test.go": "sha256:77d311bca42f48faf3fbdc15c53582e3d8a6d9108a72ed7bb6172e5b88951428",
"source_test.go": "sha256:1ad3f9b198155193fd8193f50084889cc949192abf64c060a5ce3043f2ccb212",
"two_factor.go": "sha256:d3a6e0b348b225d0fc012fdd5a6275736a1b324ec4cd1c013ae80a12531e0b8e",
"two_factor_test.go": "sha256:6a88cb12d204a3b3de49d584d589b1c5a97bfb795160ae93b87707f64bece4fe",
"twofactor.go": "sha256:905e1679be552346758b34c8ee7c950628d965d8bd3946b9b63c6797f41625d6",
"webauthn.go": "sha256:0f9adac61a225854d579ed71338303a30a5abf26e4c115a0afefaa4fd199200e",
"webauthn_test.go": "sha256:03f3487f7c05566e71399ff548a95400a66ed7afc96bbf31365aa7abb79dfa69"
},
"database_source_pins": {
"collation.go": "sha256:9922312734c5cc2a5474b322b88214586916b320969172708f48c7b6eca40e7d",
"common.go": "sha256:f0c626ebedaedb8681a4f3a3531441c49f3e0d305b20730aa47b267b6e16b3fd",
"consistency.go": "sha256:c771f62de8511bfc307583a4585190aba8b38ca2ac76eab200bc901aa15b7bad",
"context.go": "sha256:d4c4acfcb8987071aecf5cd957b3821c8d2619a2696398d37c2970f2527686f7",
"context_committer_test.go": "sha256:83cf7fbfc32aff358221abadee63e96a803a4136c9851cf696c543dc5176d777",
"context_test.go": "sha256:677f6be23f1c855a154de6078a540b60e17c737becfae6115e55ff6d81c3a937",
"convert.go": "sha256:48e62893b598b767dccbf414c0acffbc26c6cfb6cb22ba79eb5b66dbb6c8193a",
"engine.go": "sha256:d21a5b0b9ca37ac48222b79007467a232abc38edda99b3c5f54f1f4c5ab795e8",
"engine_test.go": "sha256:ec78585da5d8b33deb0b55ba3ffd9d8ff4df704ffd62c2d95c2a6ffddd5bc309",
"error.go": "sha256:ca0ead3529d977f90930974200a0a751366629590dae516cb54245d9c75bb280",
"index.go": "sha256:fdfdaf6da41f317d51665bfc03684074aadf5fb32607d80c15ee9b33fdc89f09",
"index_test.go": "sha256:d46ea9d96fc9b51e477ebecb5cfa0e15fc8e13a00c5c84ce620dd23e73663558",
"iterate.go": "sha256:0512e2f2a3785daec26f434f6b55c37e8cd590c1b49d2068f42160c424757e28",
"iterate_test.go": "sha256:8b9eb9d391bd99bddf6b3da5744bd80088eb4d8446c7f51dd3299abe1b8a5ebe",
"list.go": "sha256:e23e7056f9dbce52d85ca922fa4eadb834a6ee3a5dbcafe82485038332b798e0",
"list_test.go": "sha256:5bc42a869931470daf503b51bd3dbf5cb092d37d8cc4e03f80a21f564beadf6a",
"log.go": "sha256:6f080111c46868e337d4d6dd16c56a5743c13b86b412df219701030cd1718a01",
"main_test.go": "sha256:d9eb5ba4ab294ebb2c865969479d6d73db21669f24cc5454ac42f6dbd8825ef3",
"name.go": "sha256:e486e89a36103f56af54f5f39a9b166ac0b08800abaccc2857ab324777dda6b5",
"search.go": "sha256:b488e9a93f95d28450929896ce648e67f6772e1cd8662f7a0a1a8988a24dbfa2",
"sensitive_sql.go": "sha256:06a298d0d6e628e6920384d4ddeef449e40c090841ebaa3f6d175725a45ae584",
"sensitive_sql_logging_test.go": "sha256:d924b35d30686473caf29601cf51cc363ba68158cb4ef0981c9e2fc7b03c04b7",
"sensitive_sql_test.go": "sha256:de6353c955047c3311747e4777b9f9b2195e9efb19160b971dd758dfc94cf31b",
"sequence.go": "sha256:c0e4c7fbaa93961d9711143cfcf4bbb32f197985d21b77424946fbe3a39b38eb",
"sql_postgres_with_schema.go": "sha256:e5941e859ada7831b400fd3143e58f91b1058cb32779d6a4466af01617cf6e7a",
"tracing_context_test.go": "sha256:53d35e31ae9f318d8f77a323fdc5b18bae804bdc86ccb639f335dfbe59e9b17c"
},
"original_composite_patch": "sha256:15cb7f13b1b1d1095cc344176ca337f705333a436a70ae803fcfd3d7f802ccf4",
"runtime": "custodian-forgejo-pg-96ce905f445a",
"image_id": "sha256:57c72fd2a128e416c7fcc499958864df5301e940bca0a56f58fddf30ffc07777",
"controlled_mutation": {
"mutation": "none"
},
"network": "disabled; only the exact disposable database Unix socket is bound",
"production_database": false,
"actual_authenticated_operation": false,
"real_credentials": false,
"test_binary_sha256": "sha256:ea124dc75fa8c4d4063fdd2df57e506c1cd53e3c4478597e2d51b5c214de7569"
}

View file

@ -0,0 +1,21 @@
{"Time":"2026-10-18T01:03:05.798825901Z","Action":"start","Package":"forgejo.org/models/auth"}
{"Time":"2026-10-18T01:03:06.006751622Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:03:06 ...s/storage/storage.go:157:initAttachments() [I] Initialising Attachment storage with type: local\n"}
{"Time":"2026-10-18T01:03:06.006904645Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:03:06 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata2916044918/attachments\n"}
{"Time":"2026-10-18T01:03:06.006913644Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:03:06 ...s/storage/storage.go:147:initAvatars() [I] Initialising Avatar storage with type: local\n"}
{"Time":"2026-10-18T01:03:06.006923401Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:03:06 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata2916044918/avatars\n"}
{"Time":"2026-10-18T01:03:06.00692846Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:03:06 ...s/storage/storage.go:173:initRepoAvatars() [I] Initialising Repository Avatar storage with type: local\n"}
{"Time":"2026-10-18T01:03:06.006933067Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:03:06 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata2916044918/repo-avatars\n"}
{"Time":"2026-10-18T01:03:06.006940002Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:03:06 ...s/storage/storage.go:179:initRepoArchives() [I] Initialising Repository Archive storage with type: local\n"}
{"Time":"2026-10-18T01:03:06.006945538Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:03:06 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata2916044918/repo-archive\n"}
{"Time":"2026-10-18T01:03:06.006949975Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:03:06 ...s/storage/storage.go:189:initPackages() [I] Initialising Packages storage with type: local\n"}
{"Time":"2026-10-18T01:03:06.006954375Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:03:06 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata2916044918/packages\n"}
{"Time":"2026-10-18T01:03:06.006965331Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:03:06 ...s/storage/storage.go:200:initActions() [I] Initialising Actions storage with type: local\n"}
{"Time":"2026-10-18T01:03:06.006970922Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:03:06 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata2916044918/actions_log\n"}
{"Time":"2026-10-18T01:03:06.006975304Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:03:06 ...s/storage/storage.go:204:initActions() [I] Initialising ActionsArtifacts storage with type: local\n"}
{"Time":"2026-10-18T01:03:06.006979578Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:03:06 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /pg-work/data/actions_artifacts\n"}
{"Time":"2026-10-18T01:03:06.127322066Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgresProcessRecovery"}
{"Time":"2026-10-18T01:03:06.127401752Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgresProcessRecovery","Output":"=== RUN TestSourceOperationPostgresProcessRecovery\n"}
{"Time":"2026-10-18T01:03:08.84880067Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgresProcessRecovery","Output":"--- PASS: TestSourceOperationPostgresProcessRecovery (2.72s)\n"}
{"Time":"2026-10-18T01:03:08.848862213Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgresProcessRecovery","Elapsed":2.72}
{"Time":"2026-10-18T01:03:08.849116041Z","Action":"output","Package":"forgejo.org/models/auth","Output":"PASS\n"}
{"Time":"2026-10-18T01:03:08.889481889Z","Action":"pass","Package":"forgejo.org/models/auth","Elapsed":3.091}

View file

@ -0,0 +1,163 @@
{
"action": "suite",
"returncode": 1,
"expected_returncode": 0,
"outcome_matches": false,
"seconds": 10.04,
"argv": [
"bwrap",
"--unshare-pid",
"--die-with-parent",
"--new-session",
"--unshare-net",
"--ro-bind",
"/usr",
"/usr",
"--ro-bind",
"/lib",
"/lib",
"--ro-bind",
"/lib64",
"/lib64",
"--symlink",
"usr/bin",
"/bin",
"--proc",
"/proc",
"--dev",
"/dev",
"--tmpfs",
"/tmp",
"--bind",
"/tmp/custodian-forgejo-successor-r3",
"/work",
"--ro-bind",
"/home/worsch/go/pkg/mod/cache/download",
"/cached",
"--ro-bind",
"/etc/ssl/certs",
"/etc/ssl/certs",
"--ro-bind",
"/etc/resolv.conf",
"/etc/resolv.conf",
"--chdir",
"/work/source",
"--clearenv",
"--ro-bind",
"/tmp/custodian-forgejo-successor-attempt2/modules",
"/work/modules",
"--bind",
"/tmp/custodian-forgejo-successor-attempt2/gocache",
"/work/gocache",
"--dir",
"/run",
"--ro-bind",
"/tmp/custodian-forgejo-successor-r3/descriptor-fixtures",
"/run/forgejo-oidc",
"--bind",
"/tmp/custodian-forgejo-successor-r3/descriptor-fixtures",
"/run/writable-input",
"--setenv",
"PATH",
"/work/go/bin:/usr/bin:/bin",
"--setenv",
"HOME",
"/work/home",
"--setenv",
"GOPATH",
"/work/gopath",
"--setenv",
"GOTOOLCHAIN",
"local",
"--setenv",
"GOPROXY",
"off",
"--setenv",
"GOSUMDB",
"off",
"--setenv",
"GOVCS",
"*:off",
"--setenv",
"GOMODCACHE",
"/work/modules",
"--setenv",
"GOCACHE",
"/work/gocache",
"--setenv",
"GOMAXPROCS",
"4",
"--setenv",
"CGO_ENABLED",
"1",
"--setenv",
"GIT_CONFIG_NOSYSTEM",
"1",
"--setenv",
"GIT_CONFIG_GLOBAL",
"/work/home/test.gitconfig",
"--setenv",
"GIT_TERMINAL_PROMPT",
"0",
"--ro-bind",
"/tmp/custodian-forgejo-postgres-tests-r1/auth",
"/work/source/models/auth",
"--bind",
"/tmp/custodian-forgejo-postgres-tests-r1",
"/pg-work",
"--dir",
"/run",
"--ro-bind",
"/tmp/custodian-forgejo-postgres-r1-attempt3/socket",
"/run/source-operation-postgres",
"--setenv",
"CUSTODIAN_PG_SOCKET",
"/run/source-operation-postgres",
"--",
"go",
"tool",
"test2json",
"-t",
"-p",
"forgejo.org/models/auth",
"/pg-work/models-auth.test",
"-test.v",
"-test.run=^TestSourceOperationPostgres$",
"-test.count=1"
],
"workspace": "/tmp/custodian-forgejo-postgres-tests-r1",
"source_pins": {
"access_token.go": "sha256:c3131e03c24356fb09fdd600efd17d8054063534355a4c5a3b769f840a58c8ac",
"access_token_scope.go": "sha256:36173156237cc3c3231da78fc9c7e503391ea29c29496721bf4f6b197ab128d3",
"access_token_scope_test.go": "sha256:738bff8f60339a3b4cbd21c31f52812eacde1435fcf55ea657c2a950c262de7d",
"access_token_test.go": "sha256:0121b13b075e6dadb5f6bf5899ceb815786d386cd75214566545b1a3cbe5e721",
"auth_token.go": "sha256:e652217daeffab3c9918efaab56ba4a0a0e8024071840cd8bb85925fe2568bd9",
"main_test.go": "sha256:1c78be2861df2215936939b085bc2bac431f607731fe68da85cfc9c95a4eac87",
"oauth2.go": "sha256:626c075138a8e1dd22d4814b11c6d6acd04e8aae2443e47017de9a289b8f55ac",
"oauth2_list.go": "sha256:2665b0833370d4cb9d0a30e43bd86625f4f707e26a8e5bef53559816aafb7e91",
"oauth2_test.go": "sha256:66e671311715001e2c8119daa944667b9744b4a701732007c6f4510d1daf40ca",
"session.go": "sha256:25d934eb96d2b540a51b7337650b58123ad4ee7e1c61547e7efc1c36eb12c26d",
"session_test.go": "sha256:cae8e667a88143cf7ce3238e8adc9e87fd7f0bdf1b2c0d9b1736c2de38485659",
"source.go": "sha256:33ec2f66652bcb442cd80c36db0a2ad7305e1ee9c9c610d054720eea8ab18e4c",
"source_operation.go": "sha256:ef1b07ef6cf454015d00cde8588835f5118d829da91eb0303d37184859345a31",
"source_operation_internal_test.go": "sha256:af0f424d3a1fd2b29793b64baa1fa07284fee7ea0b7721c503db4efac0d871cb",
"source_operation_postgres_export_test.go": "sha256:b9d1553144766b15c408295b87506106935abf4ed61460598b58dc81825e808d",
"source_operation_postgres_test.go": "sha256:852bf5cd2d2a8504d3b82723e09f296436e546fefcf6e5c2280e76f2ef1a7f17",
"source_operation_process_test.go": "sha256:40d33b11a01cb659f0bf6f8b545c4d79910e8c082a789060bcbc9cadeee965bd",
"source_operation_test.go": "sha256:77d311bca42f48faf3fbdc15c53582e3d8a6d9108a72ed7bb6172e5b88951428",
"source_test.go": "sha256:1ad3f9b198155193fd8193f50084889cc949192abf64c060a5ce3043f2ccb212",
"two_factor.go": "sha256:d3a6e0b348b225d0fc012fdd5a6275736a1b324ec4cd1c013ae80a12531e0b8e",
"two_factor_test.go": "sha256:6a88cb12d204a3b3de49d584d589b1c5a97bfb795160ae93b87707f64bece4fe",
"twofactor.go": "sha256:905e1679be552346758b34c8ee7c950628d965d8bd3946b9b63c6797f41625d6",
"webauthn.go": "sha256:0f9adac61a225854d579ed71338303a30a5abf26e4c115a0afefaa4fd199200e",
"webauthn_test.go": "sha256:03f3487f7c05566e71399ff548a95400a66ed7afc96bbf31365aa7abb79dfa69"
},
"original_composite_patch": "sha256:15cb7f13b1b1d1095cc344176ca337f705333a436a70ae803fcfd3d7f802ccf4",
"runtime": "custodian-forgejo-pg-96ce905f445a",
"image_id": "sha256:57c72fd2a128e416c7fcc499958864df5301e940bca0a56f58fddf30ffc07777",
"network": "disabled; only the exact disposable database Unix socket is bound",
"production_database": false,
"actual_authenticated_operation": false,
"real_credentials": false,
"test_binary_sha256": "sha256:a58899fab4b0355a6d9436ab726b1aeada01a2987856b3490a15cf3d33984a88"
}

View file

@ -0,0 +1,121 @@
{"Time":"2026-10-18T00:54:19.636581022Z","Action":"start","Package":"forgejo.org/models/auth"}
{"Time":"2026-10-18T00:54:19.842990527Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 00:54:19 ...s/storage/storage.go:157:initAttachments() [I] Initialising Attachment storage with type: local\n"}
{"Time":"2026-10-18T00:54:19.843125687Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 00:54:19 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata1795841647/attachments\n"}
{"Time":"2026-10-18T00:54:19.843136949Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 00:54:19 ...s/storage/storage.go:147:initAvatars() [I] Initialising Avatar storage with type: local\n"}
{"Time":"2026-10-18T00:54:19.843150656Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 00:54:19 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata1795841647/avatars\n"}
{"Time":"2026-10-18T00:54:19.843157013Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 00:54:19 ...s/storage/storage.go:173:initRepoAvatars() [I] Initialising Repository Avatar storage with type: local\n"}
{"Time":"2026-10-18T00:54:19.84316144Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 00:54:19 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata1795841647/repo-avatars\n"}
{"Time":"2026-10-18T00:54:19.843166535Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 00:54:19 ...s/storage/storage.go:179:initRepoArchives() [I] Initialising Repository Archive storage with type: local\n"}
{"Time":"2026-10-18T00:54:19.843172703Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 00:54:19 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata1795841647/repo-archive\n"}
{"Time":"2026-10-18T00:54:19.843181927Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 00:54:19 ...s/storage/storage.go:189:initPackages() [I] Initialising Packages storage with type: local\n"}
{"Time":"2026-10-18T00:54:19.843186716Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 00:54:19 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata1795841647/packages\n"}
{"Time":"2026-10-18T00:54:19.843192243Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 00:54:19 ...s/storage/storage.go:200:initActions() [I] Initialising Actions storage with type: local\n"}
{"Time":"2026-10-18T00:54:19.843196986Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 00:54:19 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata1795841647/actions_log\n"}
{"Time":"2026-10-18T00:54:19.843201675Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 00:54:19 ...s/storage/storage.go:204:initActions() [I] Initialising ActionsArtifacts storage with type: local\n"}
{"Time":"2026-10-18T00:54:19.843209529Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 00:54:19 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /pg-work/data/actions_artifacts\n"}
{"Time":"2026-10-18T00:54:20.426786911Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres"}
{"Time":"2026-10-18T00:54:20.426845226Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres","Output":"=== RUN TestSourceOperationPostgres\n"}
{"Time":"2026-10-18T00:54:20.426853882Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public"}
{"Time":"2026-10-18T00:54:20.426857976Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public","Output":"=== RUN TestSourceOperationPostgres/public\n"}
{"Time":"2026-10-18T00:54:23.430331356Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/create-reconcile-inverse"}
{"Time":"2026-10-18T00:54:23.430407065Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/create-reconcile-inverse","Output":"=== RUN TestSourceOperationPostgres/public/create-reconcile-inverse\n"}
{"Time":"2026-10-18T00:54:23.55050287Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/exact-raw-preexisting-restoration"}
{"Time":"2026-10-18T00:54:23.550546062Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/exact-raw-preexisting-restoration","Output":"=== RUN TestSourceOperationPostgres/public/exact-raw-preexisting-restoration\n"}
{"Time":"2026-10-18T00:54:23.652105758Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/unchanged-preexisting-survives"}
{"Time":"2026-10-18T00:54:23.652148581Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/unchanged-preexisting-survives","Output":"=== RUN TestSourceOperationPostgres/public/unchanged-preexisting-survives\n"}
{"Time":"2026-10-18T00:54:23.75315772Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/private-drift-before-apply"}
{"Time":"2026-10-18T00:54:23.75324232Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/private-drift-before-apply","Output":"=== RUN TestSourceOperationPostgres/public/private-drift-before-apply\n"}
{"Time":"2026-10-18T00:54:23.846277143Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/private-drift-before-inverse"}
{"Time":"2026-10-18T00:54:23.846321454Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/private-drift-before-inverse","Output":"=== RUN TestSourceOperationPostgres/public/private-drift-before-inverse\n"}
{"Time":"2026-10-18T00:54:23.946441423Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/linked-user-refuses-deletion"}
{"Time":"2026-10-18T00:54:23.946608458Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/linked-user-refuses-deletion","Output":"=== RUN TestSourceOperationPostgres/public/linked-user-refuses-deletion\n"}
{"Time":"2026-10-18T00:54:24.040268154Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/linked-user-refuses-deletion","Output":" source_operation_postgres_test.go:166: \n"}
{"Time":"2026-10-18T00:54:24.04029856Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/linked-user-refuses-deletion","Output":" \tError Trace:\t/work/source/models/auth/source_operation_postgres_test.go:166\n"}
{"Time":"2026-10-18T00:54:24.040303456Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/linked-user-refuses-deletion","Output":" \t \t\t\t\t/work/source/models/auth/source_operation_postgres_test.go:77\n"}
{"Time":"2026-10-18T00:54:24.040307262Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/linked-user-refuses-deletion","Output":" \tError: \tReceived unexpected error:\n"}
{"Time":"2026-10-18T00:54:24.04031095Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/linked-user-refuses-deletion","Output":" \t \tpq: null value in column \"email\" of relation \"user\" violates not-null constraint\n"}
{"Time":"2026-10-18T00:54:24.040334557Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/linked-user-refuses-deletion","Output":" \tTest: \tTestSourceOperationPostgres/public/linked-user-refuses-deletion\n"}
{"Time":"2026-10-18T00:54:24.040342862Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/linked-external-refuses-deletion"}
{"Time":"2026-10-18T00:54:24.040354746Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/linked-external-refuses-deletion","Output":"=== RUN TestSourceOperationPostgres/public/linked-external-refuses-deletion\n"}
{"Time":"2026-10-18T00:54:24.140987869Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/unexpected-trigger-post-state-rolls-back"}
{"Time":"2026-10-18T00:54:24.141025372Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/unexpected-trigger-post-state-rolls-back","Output":"=== RUN TestSourceOperationPostgres/public/unexpected-trigger-post-state-rolls-back\n"}
{"Time":"2026-10-18T00:54:24.241651942Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/uncooperative-writers-excluded"}
{"Time":"2026-10-18T00:54:24.241705477Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/uncooperative-writers-excluded","Output":"=== RUN TestSourceOperationPostgres/public/uncooperative-writers-excluded\n"}
{"Time":"2026-10-18T00:54:24.942575411Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/concurrent-preparation-has-one-owner"}
{"Time":"2026-10-18T00:54:24.942608009Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/concurrent-preparation-has-one-owner","Output":"=== RUN TestSourceOperationPostgres/public/concurrent-preparation-has-one-owner\n"}
{"Time":"2026-10-18T00:54:25.039882318Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/custodian_named"}
{"Time":"2026-10-18T00:54:25.039947494Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/custodian_named","Output":"=== RUN TestSourceOperationPostgres/custodian_named\n"}
{"Time":"2026-10-18T00:54:27.982470899Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/custodian_named/create-reconcile-inverse"}
{"Time":"2026-10-18T00:54:27.982523911Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/custodian_named/create-reconcile-inverse","Output":"=== RUN TestSourceOperationPostgres/custodian_named/create-reconcile-inverse\n"}
{"Time":"2026-10-18T00:54:28.094540307Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/custodian_named/exact-raw-preexisting-restoration"}
{"Time":"2026-10-18T00:54:28.09457744Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/custodian_named/exact-raw-preexisting-restoration","Output":"=== RUN TestSourceOperationPostgres/custodian_named/exact-raw-preexisting-restoration\n"}
{"Time":"2026-10-18T00:54:28.19606351Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/custodian_named/unchanged-preexisting-survives"}
{"Time":"2026-10-18T00:54:28.196107541Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/custodian_named/unchanged-preexisting-survives","Output":"=== RUN TestSourceOperationPostgres/custodian_named/unchanged-preexisting-survives\n"}
{"Time":"2026-10-18T00:54:28.289418123Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/custodian_named/private-drift-before-apply"}
{"Time":"2026-10-18T00:54:28.289458123Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/custodian_named/private-drift-before-apply","Output":"=== RUN TestSourceOperationPostgres/custodian_named/private-drift-before-apply\n"}
{"Time":"2026-10-18T00:54:28.380916369Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/custodian_named/private-drift-before-inverse"}
{"Time":"2026-10-18T00:54:28.380955756Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/custodian_named/private-drift-before-inverse","Output":"=== RUN TestSourceOperationPostgres/custodian_named/private-drift-before-inverse\n"}
{"Time":"2026-10-18T00:54:28.475907423Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/custodian_named/linked-user-refuses-deletion"}
{"Time":"2026-10-18T00:54:28.475950958Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/custodian_named/linked-user-refuses-deletion","Output":"=== RUN TestSourceOperationPostgres/custodian_named/linked-user-refuses-deletion\n"}
{"Time":"2026-10-18T00:54:28.56714897Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/custodian_named/linked-user-refuses-deletion","Output":" source_operation_postgres_test.go:166: \n"}
{"Time":"2026-10-18T00:54:28.567212731Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/custodian_named/linked-user-refuses-deletion","Output":" \tError Trace:\t/work/source/models/auth/source_operation_postgres_test.go:166\n"}
{"Time":"2026-10-18T00:54:28.567236915Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/custodian_named/linked-user-refuses-deletion","Output":" \t \t\t\t\t/work/source/models/auth/source_operation_postgres_test.go:77\n"}
{"Time":"2026-10-18T00:54:28.567250071Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/custodian_named/linked-user-refuses-deletion","Output":" \tError: \tReceived unexpected error:\n"}
{"Time":"2026-10-18T00:54:28.567260333Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/custodian_named/linked-user-refuses-deletion","Output":" \t \tpq: null value in column \"email\" of relation \"user\" violates not-null constraint\n"}
{"Time":"2026-10-18T00:54:28.567269422Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/custodian_named/linked-user-refuses-deletion","Output":" \tTest: \tTestSourceOperationPostgres/custodian_named/linked-user-refuses-deletion\n"}
{"Time":"2026-10-18T00:54:28.567281217Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/custodian_named/linked-external-refuses-deletion"}
{"Time":"2026-10-18T00:54:28.567289837Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/custodian_named/linked-external-refuses-deletion","Output":"=== RUN TestSourceOperationPostgres/custodian_named/linked-external-refuses-deletion\n"}
{"Time":"2026-10-18T00:54:28.66315679Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/custodian_named/unexpected-trigger-post-state-rolls-back"}
{"Time":"2026-10-18T00:54:28.663196115Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/custodian_named/unexpected-trigger-post-state-rolls-back","Output":"=== RUN TestSourceOperationPostgres/custodian_named/unexpected-trigger-post-state-rolls-back\n"}
{"Time":"2026-10-18T00:54:28.7561333Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/custodian_named/uncooperative-writers-excluded"}
{"Time":"2026-10-18T00:54:28.7561757Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/custodian_named/uncooperative-writers-excluded","Output":"=== RUN TestSourceOperationPostgres/custodian_named/uncooperative-writers-excluded\n"}
{"Time":"2026-10-18T00:54:29.458442433Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/custodian_named/concurrent-preparation-has-one-owner"}
{"Time":"2026-10-18T00:54:29.458498141Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/custodian_named/concurrent-preparation-has-one-owner","Output":"=== RUN TestSourceOperationPostgres/custodian_named/concurrent-preparation-has-one-owner\n"}
{"Time":"2026-10-18T00:54:29.582930434Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres","Output":"--- FAIL: TestSourceOperationPostgres (9.16s)\n"}
{"Time":"2026-10-18T00:54:29.582995484Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public","Output":" --- FAIL: TestSourceOperationPostgres/public (4.61s)\n"}
{"Time":"2026-10-18T00:54:29.583007333Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/create-reconcile-inverse","Output":" --- PASS: TestSourceOperationPostgres/public/create-reconcile-inverse (0.12s)\n"}
{"Time":"2026-10-18T00:54:29.583014484Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/create-reconcile-inverse","Elapsed":0.12}
{"Time":"2026-10-18T00:54:29.583023276Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/exact-raw-preexisting-restoration","Output":" --- PASS: TestSourceOperationPostgres/public/exact-raw-preexisting-restoration (0.10s)\n"}
{"Time":"2026-10-18T00:54:29.583030102Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/exact-raw-preexisting-restoration","Elapsed":0.1}
{"Time":"2026-10-18T00:54:29.583035449Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/unchanged-preexisting-survives","Output":" --- PASS: TestSourceOperationPostgres/public/unchanged-preexisting-survives (0.10s)\n"}
{"Time":"2026-10-18T00:54:29.583042013Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/unchanged-preexisting-survives","Elapsed":0.1}
{"Time":"2026-10-18T00:54:29.583047144Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/private-drift-before-apply","Output":" --- PASS: TestSourceOperationPostgres/public/private-drift-before-apply (0.09s)\n"}
{"Time":"2026-10-18T00:54:29.583053727Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/private-drift-before-apply","Elapsed":0.09}
{"Time":"2026-10-18T00:54:29.583059354Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/private-drift-before-inverse","Output":" --- PASS: TestSourceOperationPostgres/public/private-drift-before-inverse (0.10s)\n"}
{"Time":"2026-10-18T00:54:29.583066198Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/private-drift-before-inverse","Elapsed":0.1}
{"Time":"2026-10-18T00:54:29.583071978Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/linked-user-refuses-deletion","Output":" --- FAIL: TestSourceOperationPostgres/public/linked-user-refuses-deletion (0.09s)\n"}
{"Time":"2026-10-18T00:54:29.583078073Z","Action":"fail","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/linked-user-refuses-deletion","Elapsed":0.09}
{"Time":"2026-10-18T00:54:29.583083394Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/linked-external-refuses-deletion","Output":" --- PASS: TestSourceOperationPostgres/public/linked-external-refuses-deletion (0.10s)\n"}
{"Time":"2026-10-18T00:54:29.583089877Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/linked-external-refuses-deletion","Elapsed":0.1}
{"Time":"2026-10-18T00:54:29.583095477Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/unexpected-trigger-post-state-rolls-back","Output":" --- PASS: TestSourceOperationPostgres/public/unexpected-trigger-post-state-rolls-back (0.10s)\n"}
{"Time":"2026-10-18T00:54:29.583102068Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/unexpected-trigger-post-state-rolls-back","Elapsed":0.1}
{"Time":"2026-10-18T00:54:29.583143692Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/uncooperative-writers-excluded","Output":" --- PASS: TestSourceOperationPostgres/public/uncooperative-writers-excluded (0.70s)\n"}
{"Time":"2026-10-18T00:54:29.583157966Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/uncooperative-writers-excluded","Elapsed":0.7}
{"Time":"2026-10-18T00:54:29.583164486Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/concurrent-preparation-has-one-owner","Output":" --- PASS: TestSourceOperationPostgres/public/concurrent-preparation-has-one-owner (0.10s)\n"}
{"Time":"2026-10-18T00:54:29.583182214Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/concurrent-preparation-has-one-owner","Elapsed":0.1}
{"Time":"2026-10-18T00:54:29.583188237Z","Action":"fail","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public","Elapsed":4.61}
{"Time":"2026-10-18T00:54:29.583193837Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/custodian_named","Output":" --- FAIL: TestSourceOperationPostgres/custodian_named (4.54s)\n"}
{"Time":"2026-10-18T00:54:29.583200915Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/custodian_named/create-reconcile-inverse","Output":" --- PASS: TestSourceOperationPostgres/custodian_named/create-reconcile-inverse (0.11s)\n"}
{"Time":"2026-10-18T00:54:29.583207083Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/custodian_named/create-reconcile-inverse","Elapsed":0.11}
{"Time":"2026-10-18T00:54:29.583212512Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/custodian_named/exact-raw-preexisting-restoration","Output":" --- PASS: TestSourceOperationPostgres/custodian_named/exact-raw-preexisting-restoration (0.10s)\n"}
{"Time":"2026-10-18T00:54:29.583219058Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/custodian_named/exact-raw-preexisting-restoration","Elapsed":0.1}
{"Time":"2026-10-18T00:54:29.583224847Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/custodian_named/unchanged-preexisting-survives","Output":" --- PASS: TestSourceOperationPostgres/custodian_named/unchanged-preexisting-survives (0.09s)\n"}
{"Time":"2026-10-18T00:54:29.583231168Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/custodian_named/unchanged-preexisting-survives","Elapsed":0.09}
{"Time":"2026-10-18T00:54:29.58323574Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/custodian_named/private-drift-before-apply","Output":" --- PASS: TestSourceOperationPostgres/custodian_named/private-drift-before-apply (0.09s)\n"}
{"Time":"2026-10-18T00:54:29.583241231Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/custodian_named/private-drift-before-apply","Elapsed":0.09}
{"Time":"2026-10-18T00:54:29.583245722Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/custodian_named/private-drift-before-inverse","Output":" --- PASS: TestSourceOperationPostgres/custodian_named/private-drift-before-inverse (0.09s)\n"}
{"Time":"2026-10-18T00:54:29.5832506Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/custodian_named/private-drift-before-inverse","Elapsed":0.09}
{"Time":"2026-10-18T00:54:29.583258256Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/custodian_named/linked-user-refuses-deletion","Output":" --- FAIL: TestSourceOperationPostgres/custodian_named/linked-user-refuses-deletion (0.09s)\n"}
{"Time":"2026-10-18T00:54:29.58326336Z","Action":"fail","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/custodian_named/linked-user-refuses-deletion","Elapsed":0.09}
{"Time":"2026-10-18T00:54:29.583274406Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/custodian_named/linked-external-refuses-deletion","Output":" --- PASS: TestSourceOperationPostgres/custodian_named/linked-external-refuses-deletion (0.10s)\n"}
{"Time":"2026-10-18T00:54:29.583280069Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/custodian_named/linked-external-refuses-deletion","Elapsed":0.1}
{"Time":"2026-10-18T00:54:29.583284749Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/custodian_named/unexpected-trigger-post-state-rolls-back","Output":" --- PASS: TestSourceOperationPostgres/custodian_named/unexpected-trigger-post-state-rolls-back (0.09s)\n"}
{"Time":"2026-10-18T00:54:29.583289925Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/custodian_named/unexpected-trigger-post-state-rolls-back","Elapsed":0.09}
{"Time":"2026-10-18T00:54:29.58329428Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/custodian_named/uncooperative-writers-excluded","Output":" --- PASS: TestSourceOperationPostgres/custodian_named/uncooperative-writers-excluded (0.70s)\n"}
{"Time":"2026-10-18T00:54:29.583299636Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/custodian_named/uncooperative-writers-excluded","Elapsed":0.7}
{"Time":"2026-10-18T00:54:29.583304388Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/custodian_named/concurrent-preparation-has-one-owner","Output":" --- PASS: TestSourceOperationPostgres/custodian_named/concurrent-preparation-has-one-owner (0.12s)\n"}
{"Time":"2026-10-18T00:54:29.583312215Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/custodian_named/concurrent-preparation-has-one-owner","Elapsed":0.12}
{"Time":"2026-10-18T00:54:29.583316336Z","Action":"fail","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/custodian_named","Elapsed":4.54}
{"Time":"2026-10-18T00:54:29.583320845Z","Action":"fail","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres","Elapsed":9.16}
{"Time":"2026-10-18T00:54:29.5833252Z","Action":"output","Package":"forgejo.org/models/auth","Output":"FAIL\n"}
{"Time":"2026-10-18T00:54:29.611127117Z","Action":"fail","Package":"forgejo.org/models/auth","Elapsed":9.975}

View file

@ -0,0 +1,163 @@
{
"action": "suite",
"returncode": 0,
"expected_returncode": 0,
"outcome_matches": true,
"seconds": 10.59,
"argv": [
"bwrap",
"--unshare-pid",
"--die-with-parent",
"--new-session",
"--unshare-net",
"--ro-bind",
"/usr",
"/usr",
"--ro-bind",
"/lib",
"/lib",
"--ro-bind",
"/lib64",
"/lib64",
"--symlink",
"usr/bin",
"/bin",
"--proc",
"/proc",
"--dev",
"/dev",
"--tmpfs",
"/tmp",
"--bind",
"/tmp/custodian-forgejo-successor-r3",
"/work",
"--ro-bind",
"/home/worsch/go/pkg/mod/cache/download",
"/cached",
"--ro-bind",
"/etc/ssl/certs",
"/etc/ssl/certs",
"--ro-bind",
"/etc/resolv.conf",
"/etc/resolv.conf",
"--chdir",
"/work/source",
"--clearenv",
"--ro-bind",
"/tmp/custodian-forgejo-successor-attempt2/modules",
"/work/modules",
"--bind",
"/tmp/custodian-forgejo-successor-attempt2/gocache",
"/work/gocache",
"--dir",
"/run",
"--ro-bind",
"/tmp/custodian-forgejo-successor-r3/descriptor-fixtures",
"/run/forgejo-oidc",
"--bind",
"/tmp/custodian-forgejo-successor-r3/descriptor-fixtures",
"/run/writable-input",
"--setenv",
"PATH",
"/work/go/bin:/usr/bin:/bin",
"--setenv",
"HOME",
"/work/home",
"--setenv",
"GOPATH",
"/work/gopath",
"--setenv",
"GOTOOLCHAIN",
"local",
"--setenv",
"GOPROXY",
"off",
"--setenv",
"GOSUMDB",
"off",
"--setenv",
"GOVCS",
"*:off",
"--setenv",
"GOMODCACHE",
"/work/modules",
"--setenv",
"GOCACHE",
"/work/gocache",
"--setenv",
"GOMAXPROCS",
"4",
"--setenv",
"CGO_ENABLED",
"1",
"--setenv",
"GIT_CONFIG_NOSYSTEM",
"1",
"--setenv",
"GIT_CONFIG_GLOBAL",
"/work/home/test.gitconfig",
"--setenv",
"GIT_TERMINAL_PROMPT",
"0",
"--ro-bind",
"/tmp/custodian-forgejo-postgres-tests-r1-attempt2/auth",
"/work/source/models/auth",
"--bind",
"/tmp/custodian-forgejo-postgres-tests-r1-attempt2",
"/pg-work",
"--dir",
"/run",
"--ro-bind",
"/tmp/custodian-forgejo-postgres-r1-attempt3/socket",
"/run/source-operation-postgres",
"--setenv",
"CUSTODIAN_PG_SOCKET",
"/run/source-operation-postgres",
"--",
"go",
"tool",
"test2json",
"-t",
"-p",
"forgejo.org/models/auth",
"/pg-work/models-auth.test",
"-test.v",
"-test.run=^TestSourceOperationPostgres$",
"-test.count=1"
],
"workspace": "/tmp/custodian-forgejo-postgres-tests-r1-attempt2",
"source_pins": {
"access_token.go": "sha256:c3131e03c24356fb09fdd600efd17d8054063534355a4c5a3b769f840a58c8ac",
"access_token_scope.go": "sha256:36173156237cc3c3231da78fc9c7e503391ea29c29496721bf4f6b197ab128d3",
"access_token_scope_test.go": "sha256:738bff8f60339a3b4cbd21c31f52812eacde1435fcf55ea657c2a950c262de7d",
"access_token_test.go": "sha256:0121b13b075e6dadb5f6bf5899ceb815786d386cd75214566545b1a3cbe5e721",
"auth_token.go": "sha256:e652217daeffab3c9918efaab56ba4a0a0e8024071840cd8bb85925fe2568bd9",
"main_test.go": "sha256:1c78be2861df2215936939b085bc2bac431f607731fe68da85cfc9c95a4eac87",
"oauth2.go": "sha256:626c075138a8e1dd22d4814b11c6d6acd04e8aae2443e47017de9a289b8f55ac",
"oauth2_list.go": "sha256:2665b0833370d4cb9d0a30e43bd86625f4f707e26a8e5bef53559816aafb7e91",
"oauth2_test.go": "sha256:66e671311715001e2c8119daa944667b9744b4a701732007c6f4510d1daf40ca",
"session.go": "sha256:25d934eb96d2b540a51b7337650b58123ad4ee7e1c61547e7efc1c36eb12c26d",
"session_test.go": "sha256:cae8e667a88143cf7ce3238e8adc9e87fd7f0bdf1b2c0d9b1736c2de38485659",
"source.go": "sha256:33ec2f66652bcb442cd80c36db0a2ad7305e1ee9c9c610d054720eea8ab18e4c",
"source_operation.go": "sha256:ef1b07ef6cf454015d00cde8588835f5118d829da91eb0303d37184859345a31",
"source_operation_internal_test.go": "sha256:af0f424d3a1fd2b29793b64baa1fa07284fee7ea0b7721c503db4efac0d871cb",
"source_operation_postgres_export_test.go": "sha256:b9d1553144766b15c408295b87506106935abf4ed61460598b58dc81825e808d",
"source_operation_postgres_test.go": "sha256:0475dfa7d5e31733321134345ff90a3cd9fd8049db9c2b7d54ef1a71c0d70afd",
"source_operation_process_test.go": "sha256:40d33b11a01cb659f0bf6f8b545c4d79910e8c082a789060bcbc9cadeee965bd",
"source_operation_test.go": "sha256:77d311bca42f48faf3fbdc15c53582e3d8a6d9108a72ed7bb6172e5b88951428",
"source_test.go": "sha256:1ad3f9b198155193fd8193f50084889cc949192abf64c060a5ce3043f2ccb212",
"two_factor.go": "sha256:d3a6e0b348b225d0fc012fdd5a6275736a1b324ec4cd1c013ae80a12531e0b8e",
"two_factor_test.go": "sha256:6a88cb12d204a3b3de49d584d589b1c5a97bfb795160ae93b87707f64bece4fe",
"twofactor.go": "sha256:905e1679be552346758b34c8ee7c950628d965d8bd3946b9b63c6797f41625d6",
"webauthn.go": "sha256:0f9adac61a225854d579ed71338303a30a5abf26e4c115a0afefaa4fd199200e",
"webauthn_test.go": "sha256:03f3487f7c05566e71399ff548a95400a66ed7afc96bbf31365aa7abb79dfa69"
},
"original_composite_patch": "sha256:15cb7f13b1b1d1095cc344176ca337f705333a436a70ae803fcfd3d7f802ccf4",
"runtime": "custodian-forgejo-pg-96ce905f445a",
"image_id": "sha256:57c72fd2a128e416c7fcc499958864df5301e940bca0a56f58fddf30ffc07777",
"network": "disabled; only the exact disposable database Unix socket is bound",
"production_database": false,
"actual_authenticated_operation": false,
"real_credentials": false,
"test_binary_sha256": "sha256:9eadebf02dabd91ed50ddd590b62bda1ee4a89cd824069495603ad62b7d144ec"
}

View file

@ -0,0 +1,153 @@
{"Time":"2026-10-18T00:55:55.906057855Z","Action":"start","Package":"forgejo.org/models/auth"}
{"Time":"2026-10-18T00:55:56.038866329Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 00:55:56 ...s/storage/storage.go:157:initAttachments() [I] Initialising Attachment storage with type: local\n"}
{"Time":"2026-10-18T00:55:56.038935022Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 00:55:56 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata1794699226/attachments\n"}
{"Time":"2026-10-18T00:55:56.038939801Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 00:55:56 ...s/storage/storage.go:147:initAvatars() [I] Initialising Avatar storage with type: local\n"}
{"Time":"2026-10-18T00:55:56.038946501Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 00:55:56 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata1794699226/avatars\n"}
{"Time":"2026-10-18T00:55:56.038950126Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 00:55:56 ...s/storage/storage.go:173:initRepoAvatars() [I] Initialising Repository Avatar storage with type: local\n"}
{"Time":"2026-10-18T00:55:56.038953534Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 00:55:56 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata1794699226/repo-avatars\n"}
{"Time":"2026-10-18T00:55:56.038956952Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 00:55:56 ...s/storage/storage.go:179:initRepoArchives() [I] Initialising Repository Archive storage with type: local\n"}
{"Time":"2026-10-18T00:55:56.03896018Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 00:55:56 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata1794699226/repo-archive\n"}
{"Time":"2026-10-18T00:55:56.038963489Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 00:55:56 ...s/storage/storage.go:189:initPackages() [I] Initialising Packages storage with type: local\n"}
{"Time":"2026-10-18T00:55:56.038966627Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 00:55:56 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata1794699226/packages\n"}
{"Time":"2026-10-18T00:55:56.03896972Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 00:55:56 ...s/storage/storage.go:200:initActions() [I] Initialising Actions storage with type: local\n"}
{"Time":"2026-10-18T00:55:56.038972786Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 00:55:56 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata1794699226/actions_log\n"}
{"Time":"2026-10-18T00:55:56.038975897Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 00:55:56 ...s/storage/storage.go:204:initActions() [I] Initialising ActionsArtifacts storage with type: local\n"}
{"Time":"2026-10-18T00:55:56.038978963Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 00:55:56 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /pg-work/data/actions_artifacts\n"}
{"Time":"2026-10-18T00:55:56.149624607Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres"}
{"Time":"2026-10-18T00:55:56.149763103Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres","Output":"=== RUN TestSourceOperationPostgres\n"}
{"Time":"2026-10-18T00:55:56.149778577Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default"}
{"Time":"2026-10-18T00:55:56.149783256Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default","Output":"=== RUN TestSourceOperationPostgres/default\n"}
{"Time":"2026-10-18T00:55:58.004474379Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/create-reconcile-inverse"}
{"Time":"2026-10-18T00:55:58.004535444Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/create-reconcile-inverse","Output":"=== RUN TestSourceOperationPostgres/default/create-reconcile-inverse\n"}
{"Time":"2026-10-18T00:55:58.12083247Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/exact-raw-preexisting-restoration"}
{"Time":"2026-10-18T00:55:58.120870225Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/exact-raw-preexisting-restoration","Output":"=== RUN TestSourceOperationPostgres/default/exact-raw-preexisting-restoration\n"}
{"Time":"2026-10-18T00:55:58.221400056Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/unchanged-preexisting-survives"}
{"Time":"2026-10-18T00:55:58.221453645Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/unchanged-preexisting-survives","Output":"=== RUN TestSourceOperationPostgres/default/unchanged-preexisting-survives\n"}
{"Time":"2026-10-18T00:55:58.349182906Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/private-drift-before-apply"}
{"Time":"2026-10-18T00:55:58.34923728Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/private-drift-before-apply","Output":"=== RUN TestSourceOperationPostgres/default/private-drift-before-apply\n"}
{"Time":"2026-10-18T00:55:58.439484005Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/private-drift-before-inverse"}
{"Time":"2026-10-18T00:55:58.439533572Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/private-drift-before-inverse","Output":"=== RUN TestSourceOperationPostgres/default/private-drift-before-inverse\n"}
{"Time":"2026-10-18T00:55:58.532963858Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/linked-user-refuses-deletion"}
{"Time":"2026-10-18T00:55:58.533017555Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/linked-user-refuses-deletion","Output":"=== RUN TestSourceOperationPostgres/default/linked-user-refuses-deletion\n"}
{"Time":"2026-10-18T00:55:58.630188413Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/linked-external-refuses-deletion"}
{"Time":"2026-10-18T00:55:58.630228819Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/linked-external-refuses-deletion","Output":"=== RUN TestSourceOperationPostgres/default/linked-external-refuses-deletion\n"}
{"Time":"2026-10-18T00:55:58.726484208Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/unexpected-trigger-post-state-rolls-back"}
{"Time":"2026-10-18T00:55:58.726543235Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/unexpected-trigger-post-state-rolls-back","Output":"=== RUN TestSourceOperationPostgres/default/unexpected-trigger-post-state-rolls-back\n"}
{"Time":"2026-10-18T00:55:58.823504177Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/uncooperative-writers-excluded"}
{"Time":"2026-10-18T00:55:58.823540435Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/uncooperative-writers-excluded","Output":"=== RUN TestSourceOperationPostgres/default/uncooperative-writers-excluded\n"}
{"Time":"2026-10-18T00:55:59.525498454Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/concurrent-preparation-has-one-owner"}
{"Time":"2026-10-18T00:55:59.525539464Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/concurrent-preparation-has-one-owner","Output":"=== RUN TestSourceOperationPostgres/default/concurrent-preparation-has-one-owner\n"}
{"Time":"2026-10-18T00:55:59.629264816Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public"}
{"Time":"2026-10-18T00:55:59.629317089Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public","Output":"=== RUN TestSourceOperationPostgres/public\n"}
{"Time":"2026-10-18T00:56:05.002596034Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/create-reconcile-inverse"}
{"Time":"2026-10-18T00:56:05.002650291Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/create-reconcile-inverse","Output":"=== RUN TestSourceOperationPostgres/public/create-reconcile-inverse\n"}
{"Time":"2026-10-18T00:56:05.122746115Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/exact-raw-preexisting-restoration"}
{"Time":"2026-10-18T00:56:05.122785799Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/exact-raw-preexisting-restoration","Output":"=== RUN TestSourceOperationPostgres/public/exact-raw-preexisting-restoration\n"}
{"Time":"2026-10-18T00:56:05.224658278Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/unchanged-preexisting-survives"}
{"Time":"2026-10-18T00:56:05.224704329Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/unchanged-preexisting-survives","Output":"=== RUN TestSourceOperationPostgres/public/unchanged-preexisting-survives\n"}
{"Time":"2026-10-18T00:56:05.324254052Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/private-drift-before-apply"}
{"Time":"2026-10-18T00:56:05.324306658Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/private-drift-before-apply","Output":"=== RUN TestSourceOperationPostgres/public/private-drift-before-apply\n"}
{"Time":"2026-10-18T00:56:05.421027627Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/private-drift-before-inverse"}
{"Time":"2026-10-18T00:56:05.421068628Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/private-drift-before-inverse","Output":"=== RUN TestSourceOperationPostgres/public/private-drift-before-inverse\n"}
{"Time":"2026-10-18T00:56:05.519545031Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/linked-user-refuses-deletion"}
{"Time":"2026-10-18T00:56:05.519602552Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/linked-user-refuses-deletion","Output":"=== RUN TestSourceOperationPostgres/public/linked-user-refuses-deletion\n"}
{"Time":"2026-10-18T00:56:05.621130135Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/linked-external-refuses-deletion"}
{"Time":"2026-10-18T00:56:05.621169432Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/linked-external-refuses-deletion","Output":"=== RUN TestSourceOperationPostgres/public/linked-external-refuses-deletion\n"}
{"Time":"2026-10-18T00:56:05.724423108Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/unexpected-trigger-post-state-rolls-back"}
{"Time":"2026-10-18T00:56:05.724484038Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/unexpected-trigger-post-state-rolls-back","Output":"=== RUN TestSourceOperationPostgres/public/unexpected-trigger-post-state-rolls-back\n"}
{"Time":"2026-10-18T00:56:05.821994558Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/uncooperative-writers-excluded"}
{"Time":"2026-10-18T00:56:05.822048968Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/uncooperative-writers-excluded","Output":"=== RUN TestSourceOperationPostgres/public/uncooperative-writers-excluded\n"}
{"Time":"2026-10-18T00:56:06.524609212Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/concurrent-preparation-has-one-owner"}
{"Time":"2026-10-18T00:56:06.524651467Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/concurrent-preparation-has-one-owner","Output":"=== RUN TestSourceOperationPostgres/public/concurrent-preparation-has-one-owner\n"}
{"Time":"2026-10-18T00:56:06.627601789Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named"}
{"Time":"2026-10-18T00:56:06.627652556Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named","Output":"=== RUN TestSourceOperationPostgres/named\n"}
{"Time":"2026-10-18T00:56:08.37492045Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/create-reconcile-inverse"}
{"Time":"2026-10-18T00:56:08.374966591Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/create-reconcile-inverse","Output":"=== RUN TestSourceOperationPostgres/named/create-reconcile-inverse\n"}
{"Time":"2026-10-18T00:56:08.492727684Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/exact-raw-preexisting-restoration"}
{"Time":"2026-10-18T00:56:08.492776179Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/exact-raw-preexisting-restoration","Output":"=== RUN TestSourceOperationPostgres/named/exact-raw-preexisting-restoration\n"}
{"Time":"2026-10-18T00:56:08.590136893Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/unchanged-preexisting-survives"}
{"Time":"2026-10-18T00:56:08.590173999Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/unchanged-preexisting-survives","Output":"=== RUN TestSourceOperationPostgres/named/unchanged-preexisting-survives\n"}
{"Time":"2026-10-18T00:56:08.688574718Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/private-drift-before-apply"}
{"Time":"2026-10-18T00:56:08.688620842Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/private-drift-before-apply","Output":"=== RUN TestSourceOperationPostgres/named/private-drift-before-apply\n"}
{"Time":"2026-10-18T00:56:08.778782744Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/private-drift-before-inverse"}
{"Time":"2026-10-18T00:56:08.778823944Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/private-drift-before-inverse","Output":"=== RUN TestSourceOperationPostgres/named/private-drift-before-inverse\n"}
{"Time":"2026-10-18T00:56:08.876909706Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/linked-user-refuses-deletion"}
{"Time":"2026-10-18T00:56:08.876952565Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/linked-user-refuses-deletion","Output":"=== RUN TestSourceOperationPostgres/named/linked-user-refuses-deletion\n"}
{"Time":"2026-10-18T00:56:08.980394453Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/linked-external-refuses-deletion"}
{"Time":"2026-10-18T00:56:08.980443363Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/linked-external-refuses-deletion","Output":"=== RUN TestSourceOperationPostgres/named/linked-external-refuses-deletion\n"}
{"Time":"2026-10-18T00:56:09.085590182Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/unexpected-trigger-post-state-rolls-back"}
{"Time":"2026-10-18T00:56:09.085670842Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/unexpected-trigger-post-state-rolls-back","Output":"=== RUN TestSourceOperationPostgres/named/unexpected-trigger-post-state-rolls-back\n"}
{"Time":"2026-10-18T00:56:09.186028161Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/uncooperative-writers-excluded"}
{"Time":"2026-10-18T00:56:09.186065916Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/uncooperative-writers-excluded","Output":"=== RUN TestSourceOperationPostgres/named/uncooperative-writers-excluded\n"}
{"Time":"2026-10-18T00:56:09.889229469Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/concurrent-preparation-has-one-owner"}
{"Time":"2026-10-18T00:56:09.88927167Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/concurrent-preparation-has-one-owner","Output":"=== RUN TestSourceOperationPostgres/named/concurrent-preparation-has-one-owner\n"}
{"Time":"2026-10-18T00:56:09.987233158Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres","Output":"--- PASS: TestSourceOperationPostgres (10.26s)\n"}
{"Time":"2026-10-18T00:56:09.987296784Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default","Output":" --- PASS: TestSourceOperationPostgres/default (3.48s)\n"}
{"Time":"2026-10-18T00:56:09.987307316Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/create-reconcile-inverse","Output":" --- PASS: TestSourceOperationPostgres/default/create-reconcile-inverse (0.12s)\n"}
{"Time":"2026-10-18T00:56:09.987314205Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/create-reconcile-inverse","Elapsed":0.12}
{"Time":"2026-10-18T00:56:09.987405947Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/exact-raw-preexisting-restoration","Output":" --- PASS: TestSourceOperationPostgres/default/exact-raw-preexisting-restoration (0.10s)\n"}
{"Time":"2026-10-18T00:56:09.987419229Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/exact-raw-preexisting-restoration","Elapsed":0.1}
{"Time":"2026-10-18T00:56:09.987425433Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/unchanged-preexisting-survives","Output":" --- PASS: TestSourceOperationPostgres/default/unchanged-preexisting-survives (0.13s)\n"}
{"Time":"2026-10-18T00:56:09.987435623Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/unchanged-preexisting-survives","Elapsed":0.13}
{"Time":"2026-10-18T00:56:09.987443901Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/private-drift-before-apply","Output":" --- PASS: TestSourceOperationPostgres/default/private-drift-before-apply (0.09s)\n"}
{"Time":"2026-10-18T00:56:09.987453657Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/private-drift-before-apply","Elapsed":0.09}
{"Time":"2026-10-18T00:56:09.987460447Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/private-drift-before-inverse","Output":" --- PASS: TestSourceOperationPostgres/default/private-drift-before-inverse (0.09s)\n"}
{"Time":"2026-10-18T00:56:09.987469555Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/private-drift-before-inverse","Elapsed":0.09}
{"Time":"2026-10-18T00:56:09.987476579Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/linked-user-refuses-deletion","Output":" --- PASS: TestSourceOperationPostgres/default/linked-user-refuses-deletion (0.10s)\n"}
{"Time":"2026-10-18T00:56:09.987500096Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/linked-user-refuses-deletion","Elapsed":0.1}
{"Time":"2026-10-18T00:56:09.987508067Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/linked-external-refuses-deletion","Output":" --- PASS: TestSourceOperationPostgres/default/linked-external-refuses-deletion (0.10s)\n"}
{"Time":"2026-10-18T00:56:09.987519086Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/linked-external-refuses-deletion","Elapsed":0.1}
{"Time":"2026-10-18T00:56:09.987528266Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/unexpected-trigger-post-state-rolls-back","Output":" --- PASS: TestSourceOperationPostgres/default/unexpected-trigger-post-state-rolls-back (0.10s)\n"}
{"Time":"2026-10-18T00:56:09.987541765Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/unexpected-trigger-post-state-rolls-back","Elapsed":0.1}
{"Time":"2026-10-18T00:56:09.987552225Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/uncooperative-writers-excluded","Output":" --- PASS: TestSourceOperationPostgres/default/uncooperative-writers-excluded (0.70s)\n"}
{"Time":"2026-10-18T00:56:09.987558068Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/uncooperative-writers-excluded","Elapsed":0.7}
{"Time":"2026-10-18T00:56:09.98756612Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/concurrent-preparation-has-one-owner","Output":" --- PASS: TestSourceOperationPostgres/default/concurrent-preparation-has-one-owner (0.10s)\n"}
{"Time":"2026-10-18T00:56:09.987631315Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/concurrent-preparation-has-one-owner","Elapsed":0.1}
{"Time":"2026-10-18T00:56:09.987639367Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default","Elapsed":3.48}
{"Time":"2026-10-18T00:56:09.987647546Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public","Output":" --- PASS: TestSourceOperationPostgres/public (3.42s)\n"}
{"Time":"2026-10-18T00:56:09.987656419Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/create-reconcile-inverse","Output":" --- PASS: TestSourceOperationPostgres/public/create-reconcile-inverse (0.12s)\n"}
{"Time":"2026-10-18T00:56:09.987671469Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/create-reconcile-inverse","Elapsed":0.12}
{"Time":"2026-10-18T00:56:09.987687745Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/exact-raw-preexisting-restoration","Output":" --- PASS: TestSourceOperationPostgres/public/exact-raw-preexisting-restoration (0.10s)\n"}
{"Time":"2026-10-18T00:56:09.987696979Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/exact-raw-preexisting-restoration","Elapsed":0.1}
{"Time":"2026-10-18T00:56:09.98770596Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/unchanged-preexisting-survives","Output":" --- PASS: TestSourceOperationPostgres/public/unchanged-preexisting-survives (0.10s)\n"}
{"Time":"2026-10-18T00:56:09.987712443Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/unchanged-preexisting-survives","Elapsed":0.1}
{"Time":"2026-10-18T00:56:09.987718115Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/private-drift-before-apply","Output":" --- PASS: TestSourceOperationPostgres/public/private-drift-before-apply (0.10s)\n"}
{"Time":"2026-10-18T00:56:09.987738783Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/private-drift-before-apply","Elapsed":0.1}
{"Time":"2026-10-18T00:56:09.987749062Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/private-drift-before-inverse","Output":" --- PASS: TestSourceOperationPostgres/public/private-drift-before-inverse (0.10s)\n"}
{"Time":"2026-10-18T00:56:09.987756583Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/private-drift-before-inverse","Elapsed":0.1}
{"Time":"2026-10-18T00:56:09.987762083Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/linked-user-refuses-deletion","Output":" --- PASS: TestSourceOperationPostgres/public/linked-user-refuses-deletion (0.10s)\n"}
{"Time":"2026-10-18T00:56:09.987768251Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/linked-user-refuses-deletion","Elapsed":0.1}
{"Time":"2026-10-18T00:56:09.987773391Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/linked-external-refuses-deletion","Output":" --- PASS: TestSourceOperationPostgres/public/linked-external-refuses-deletion (0.10s)\n"}
{"Time":"2026-10-18T00:56:09.987779568Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/linked-external-refuses-deletion","Elapsed":0.1}
{"Time":"2026-10-18T00:56:09.987799487Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/unexpected-trigger-post-state-rolls-back","Output":" --- PASS: TestSourceOperationPostgres/public/unexpected-trigger-post-state-rolls-back (0.10s)\n"}
{"Time":"2026-10-18T00:56:09.987811741Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/unexpected-trigger-post-state-rolls-back","Elapsed":0.1}
{"Time":"2026-10-18T00:56:09.987830741Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/uncooperative-writers-excluded","Output":" --- PASS: TestSourceOperationPostgres/public/uncooperative-writers-excluded (0.70s)\n"}
{"Time":"2026-10-18T00:56:09.987841164Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/uncooperative-writers-excluded","Elapsed":0.7}
{"Time":"2026-10-18T00:56:09.987871282Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/concurrent-preparation-has-one-owner","Output":" --- PASS: TestSourceOperationPostgres/public/concurrent-preparation-has-one-owner (0.10s)\n"}
{"Time":"2026-10-18T00:56:09.987888198Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/concurrent-preparation-has-one-owner","Elapsed":0.1}
{"Time":"2026-10-18T00:56:09.987898686Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public","Elapsed":3.42}
{"Time":"2026-10-18T00:56:09.98790397Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named","Output":" --- PASS: TestSourceOperationPostgres/named (3.36s)\n"}
{"Time":"2026-10-18T00:56:09.98791424Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/create-reconcile-inverse","Output":" --- PASS: TestSourceOperationPostgres/named/create-reconcile-inverse (0.12s)\n"}
{"Time":"2026-10-18T00:56:09.987923636Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/create-reconcile-inverse","Elapsed":0.12}
{"Time":"2026-10-18T00:56:09.987930652Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/exact-raw-preexisting-restoration","Output":" --- PASS: TestSourceOperationPostgres/named/exact-raw-preexisting-restoration (0.10s)\n"}
{"Time":"2026-10-18T00:56:09.987949642Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/exact-raw-preexisting-restoration","Elapsed":0.1}
{"Time":"2026-10-18T00:56:09.987956261Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/unchanged-preexisting-survives","Output":" --- PASS: TestSourceOperationPostgres/named/unchanged-preexisting-survives (0.10s)\n"}
{"Time":"2026-10-18T00:56:09.987962383Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/unchanged-preexisting-survives","Elapsed":0.1}
{"Time":"2026-10-18T00:56:09.987967731Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/private-drift-before-apply","Output":" --- PASS: TestSourceOperationPostgres/named/private-drift-before-apply (0.09s)\n"}
{"Time":"2026-10-18T00:56:09.98797765Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/private-drift-before-apply","Elapsed":0.09}
{"Time":"2026-10-18T00:56:09.987983321Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/private-drift-before-inverse","Output":" --- PASS: TestSourceOperationPostgres/named/private-drift-before-inverse (0.10s)\n"}
{"Time":"2026-10-18T00:56:09.987996469Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/private-drift-before-inverse","Elapsed":0.1}
{"Time":"2026-10-18T00:56:09.988002276Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/linked-user-refuses-deletion","Output":" --- PASS: TestSourceOperationPostgres/named/linked-user-refuses-deletion (0.10s)\n"}
{"Time":"2026-10-18T00:56:09.988013502Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/linked-user-refuses-deletion","Elapsed":0.1}
{"Time":"2026-10-18T00:56:09.988022952Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/linked-external-refuses-deletion","Output":" --- PASS: TestSourceOperationPostgres/named/linked-external-refuses-deletion (0.11s)\n"}
{"Time":"2026-10-18T00:56:09.98806417Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/linked-external-refuses-deletion","Elapsed":0.11}
{"Time":"2026-10-18T00:56:09.9880716Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/unexpected-trigger-post-state-rolls-back","Output":" --- PASS: TestSourceOperationPostgres/named/unexpected-trigger-post-state-rolls-back (0.10s)\n"}
{"Time":"2026-10-18T00:56:09.988077795Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/unexpected-trigger-post-state-rolls-back","Elapsed":0.1}
{"Time":"2026-10-18T00:56:09.988083061Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/uncooperative-writers-excluded","Output":" --- PASS: TestSourceOperationPostgres/named/uncooperative-writers-excluded (0.70s)\n"}
{"Time":"2026-10-18T00:56:09.988088913Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/uncooperative-writers-excluded","Elapsed":0.7}
{"Time":"2026-10-18T00:56:09.988094134Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/concurrent-preparation-has-one-owner","Output":" --- PASS: TestSourceOperationPostgres/named/concurrent-preparation-has-one-owner (0.10s)\n"}
{"Time":"2026-10-18T00:56:09.988099301Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/concurrent-preparation-has-one-owner","Elapsed":0.1}
{"Time":"2026-10-18T00:56:09.988104171Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named","Elapsed":3.36}
{"Time":"2026-10-18T00:56:09.988109319Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres","Elapsed":10.26}
{"Time":"2026-10-18T00:56:09.988136696Z","Action":"output","Package":"forgejo.org/models/auth","Output":"PASS\n"}
{"Time":"2026-10-18T00:56:10.013152394Z","Action":"pass","Package":"forgejo.org/models/auth","Elapsed":10.525}

View file

@ -0,0 +1,163 @@
{
"action": "suite",
"returncode": 1,
"expected_returncode": 0,
"outcome_matches": false,
"seconds": 3.07,
"argv": [
"bwrap",
"--unshare-pid",
"--die-with-parent",
"--new-session",
"--unshare-net",
"--ro-bind",
"/usr",
"/usr",
"--ro-bind",
"/lib",
"/lib",
"--ro-bind",
"/lib64",
"/lib64",
"--symlink",
"usr/bin",
"/bin",
"--proc",
"/proc",
"--dev",
"/dev",
"--tmpfs",
"/tmp",
"--bind",
"/tmp/custodian-forgejo-successor-r3",
"/work",
"--ro-bind",
"/home/worsch/go/pkg/mod/cache/download",
"/cached",
"--ro-bind",
"/etc/ssl/certs",
"/etc/ssl/certs",
"--ro-bind",
"/etc/resolv.conf",
"/etc/resolv.conf",
"--chdir",
"/work/source",
"--clearenv",
"--ro-bind",
"/tmp/custodian-forgejo-successor-attempt2/modules",
"/work/modules",
"--bind",
"/tmp/custodian-forgejo-successor-attempt2/gocache",
"/work/gocache",
"--dir",
"/run",
"--ro-bind",
"/tmp/custodian-forgejo-successor-r3/descriptor-fixtures",
"/run/forgejo-oidc",
"--bind",
"/tmp/custodian-forgejo-successor-r3/descriptor-fixtures",
"/run/writable-input",
"--setenv",
"PATH",
"/work/go/bin:/usr/bin:/bin",
"--setenv",
"HOME",
"/work/home",
"--setenv",
"GOPATH",
"/work/gopath",
"--setenv",
"GOTOOLCHAIN",
"local",
"--setenv",
"GOPROXY",
"off",
"--setenv",
"GOSUMDB",
"off",
"--setenv",
"GOVCS",
"*:off",
"--setenv",
"GOMODCACHE",
"/work/modules",
"--setenv",
"GOCACHE",
"/work/gocache",
"--setenv",
"GOMAXPROCS",
"4",
"--setenv",
"CGO_ENABLED",
"1",
"--setenv",
"GIT_CONFIG_NOSYSTEM",
"1",
"--setenv",
"GIT_CONFIG_GLOBAL",
"/work/home/test.gitconfig",
"--setenv",
"GIT_TERMINAL_PROMPT",
"0",
"--ro-bind",
"/tmp/custodian-forgejo-postgres-tests-r1-attempt3/auth",
"/work/source/models/auth",
"--bind",
"/tmp/custodian-forgejo-postgres-tests-r1-attempt3",
"/pg-work",
"--dir",
"/run",
"--ro-bind",
"/tmp/custodian-forgejo-postgres-r1-attempt3/socket",
"/run/source-operation-postgres",
"--setenv",
"CUSTODIAN_PG_SOCKET",
"/run/source-operation-postgres",
"--",
"go",
"tool",
"test2json",
"-t",
"-p",
"forgejo.org/models/auth",
"/pg-work/models-auth.test",
"-test.v",
"-test.run=^TestSourceOperationPostgres$",
"-test.count=1"
],
"workspace": "/tmp/custodian-forgejo-postgres-tests-r1-attempt3",
"source_pins": {
"access_token.go": "sha256:c3131e03c24356fb09fdd600efd17d8054063534355a4c5a3b769f840a58c8ac",
"access_token_scope.go": "sha256:36173156237cc3c3231da78fc9c7e503391ea29c29496721bf4f6b197ab128d3",
"access_token_scope_test.go": "sha256:738bff8f60339a3b4cbd21c31f52812eacde1435fcf55ea657c2a950c262de7d",
"access_token_test.go": "sha256:0121b13b075e6dadb5f6bf5899ceb815786d386cd75214566545b1a3cbe5e721",
"auth_token.go": "sha256:e652217daeffab3c9918efaab56ba4a0a0e8024071840cd8bb85925fe2568bd9",
"main_test.go": "sha256:1c78be2861df2215936939b085bc2bac431f607731fe68da85cfc9c95a4eac87",
"oauth2.go": "sha256:626c075138a8e1dd22d4814b11c6d6acd04e8aae2443e47017de9a289b8f55ac",
"oauth2_list.go": "sha256:2665b0833370d4cb9d0a30e43bd86625f4f707e26a8e5bef53559816aafb7e91",
"oauth2_test.go": "sha256:66e671311715001e2c8119daa944667b9744b4a701732007c6f4510d1daf40ca",
"session.go": "sha256:25d934eb96d2b540a51b7337650b58123ad4ee7e1c61547e7efc1c36eb12c26d",
"session_test.go": "sha256:cae8e667a88143cf7ce3238e8adc9e87fd7f0bdf1b2c0d9b1736c2de38485659",
"source.go": "sha256:33ec2f66652bcb442cd80c36db0a2ad7305e1ee9c9c610d054720eea8ab18e4c",
"source_operation.go": "sha256:ef1b07ef6cf454015d00cde8588835f5118d829da91eb0303d37184859345a31",
"source_operation_internal_test.go": "sha256:af0f424d3a1fd2b29793b64baa1fa07284fee7ea0b7721c503db4efac0d871cb",
"source_operation_postgres_export_test.go": "sha256:b9d1553144766b15c408295b87506106935abf4ed61460598b58dc81825e808d",
"source_operation_postgres_test.go": "sha256:4a37504e5af00580d114ef1bed5cb32e09e4ec2de5fd3192adef043a4ea5f7fe",
"source_operation_process_test.go": "sha256:40d33b11a01cb659f0bf6f8b545c4d79910e8c082a789060bcbc9cadeee965bd",
"source_operation_test.go": "sha256:77d311bca42f48faf3fbdc15c53582e3d8a6d9108a72ed7bb6172e5b88951428",
"source_test.go": "sha256:1ad3f9b198155193fd8193f50084889cc949192abf64c060a5ce3043f2ccb212",
"two_factor.go": "sha256:d3a6e0b348b225d0fc012fdd5a6275736a1b324ec4cd1c013ae80a12531e0b8e",
"two_factor_test.go": "sha256:6a88cb12d204a3b3de49d584d589b1c5a97bfb795160ae93b87707f64bece4fe",
"twofactor.go": "sha256:905e1679be552346758b34c8ee7c950628d965d8bd3946b9b63c6797f41625d6",
"webauthn.go": "sha256:0f9adac61a225854d579ed71338303a30a5abf26e4c115a0afefaa4fd199200e",
"webauthn_test.go": "sha256:03f3487f7c05566e71399ff548a95400a66ed7afc96bbf31365aa7abb79dfa69"
},
"original_composite_patch": "sha256:15cb7f13b1b1d1095cc344176ca337f705333a436a70ae803fcfd3d7f802ccf4",
"runtime": "custodian-forgejo-pg-96ce905f445a",
"image_id": "sha256:57c72fd2a128e416c7fcc499958864df5301e940bca0a56f58fddf30ffc07777",
"network": "disabled; only the exact disposable database Unix socket is bound",
"production_database": false,
"actual_authenticated_operation": false,
"real_credentials": false,
"test_binary_sha256": "sha256:b1da12376c4ee8f30e5b8302236fc77b30dd0b39b6c1c570134508bce15f55d8"
}

View file

@ -0,0 +1,89 @@
{"Time":"2026-10-18T00:57:47.387058986Z","Action":"start","Package":"forgejo.org/models/auth"}
{"Time":"2026-10-18T00:57:51.115296969Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 00:57:51 ...s/storage/storage.go:157:initAttachments() [I] Initialising Attachment storage with type: local\n"}
{"Time":"2026-10-18T00:57:51.115409856Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 00:57:51 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata1185331334/attachments\n"}
{"Time":"2026-10-18T00:57:51.115418747Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 00:57:51 ...s/storage/storage.go:147:initAvatars() [I] Initialising Avatar storage with type: local\n"}
{"Time":"2026-10-18T00:57:51.115429658Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 00:57:51 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata1185331334/avatars\n"}
{"Time":"2026-10-18T00:57:51.115435663Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 00:57:51 ...s/storage/storage.go:173:initRepoAvatars() [I] Initialising Repository Avatar storage with type: local\n"}
{"Time":"2026-10-18T00:57:51.115441272Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 00:57:51 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata1185331334/repo-avatars\n"}
{"Time":"2026-10-18T00:57:51.115446791Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 00:57:51 ...s/storage/storage.go:179:initRepoArchives() [I] Initialising Repository Archive storage with type: local\n"}
{"Time":"2026-10-18T00:57:51.115452273Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 00:57:51 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata1185331334/repo-archive\n"}
{"Time":"2026-10-18T00:57:51.115457873Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 00:57:51 ...s/storage/storage.go:189:initPackages() [I] Initialising Packages storage with type: local\n"}
{"Time":"2026-10-18T00:57:51.115463175Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 00:57:51 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata1185331334/packages\n"}
{"Time":"2026-10-18T00:57:51.115468513Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 00:57:51 ...s/storage/storage.go:200:initActions() [I] Initialising Actions storage with type: local\n"}
{"Time":"2026-10-18T00:57:51.115473842Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 00:57:51 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata1185331334/actions_log\n"}
{"Time":"2026-10-18T00:57:51.11547918Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 00:57:51 ...s/storage/storage.go:204:initActions() [I] Initialising ActionsArtifacts storage with type: local\n"}
{"Time":"2026-10-18T00:57:51.115484483Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 00:57:51 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /pg-work/data/actions_artifacts\n"}
{"Time":"2026-10-18T00:57:51.246161651Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres"}
{"Time":"2026-10-18T00:57:51.246210209Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres","Output":"=== RUN TestSourceOperationPostgres\n"}
{"Time":"2026-10-18T00:57:51.246217197Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default"}
{"Time":"2026-10-18T00:57:51.2462213Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default","Output":"=== RUN TestSourceOperationPostgres/default\n"}
{"Time":"2026-10-18T00:57:53.061963283Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/create-reconcile-inverse"}
{"Time":"2026-10-18T00:57:53.06205406Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/create-reconcile-inverse","Output":"=== RUN TestSourceOperationPostgres/default/create-reconcile-inverse\n"}
{"Time":"2026-10-18T00:57:53.181630846Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/exact-raw-preexisting-restoration"}
{"Time":"2026-10-18T00:57:53.181671523Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/exact-raw-preexisting-restoration","Output":"=== RUN TestSourceOperationPostgres/default/exact-raw-preexisting-restoration\n"}
{"Time":"2026-10-18T00:57:53.286383858Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/unchanged-preexisting-survives"}
{"Time":"2026-10-18T00:57:53.286422551Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/unchanged-preexisting-survives","Output":"=== RUN TestSourceOperationPostgres/default/unchanged-preexisting-survives\n"}
{"Time":"2026-10-18T00:57:53.384345449Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/private-drift-before-apply"}
{"Time":"2026-10-18T00:57:53.384386225Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/private-drift-before-apply","Output":"=== RUN TestSourceOperationPostgres/default/private-drift-before-apply\n"}
{"Time":"2026-10-18T00:57:53.474131611Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/private-drift-before-inverse"}
{"Time":"2026-10-18T00:57:53.474176553Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/private-drift-before-inverse","Output":"=== RUN TestSourceOperationPostgres/default/private-drift-before-inverse\n"}
{"Time":"2026-10-18T00:57:53.568216233Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/linked-user-refuses-deletion"}
{"Time":"2026-10-18T00:57:53.568257252Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/linked-user-refuses-deletion","Output":"=== RUN TestSourceOperationPostgres/default/linked-user-refuses-deletion\n"}
{"Time":"2026-10-18T00:57:53.665078598Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/linked-external-refuses-deletion"}
{"Time":"2026-10-18T00:57:53.665134352Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/linked-external-refuses-deletion","Output":"=== RUN TestSourceOperationPostgres/default/linked-external-refuses-deletion\n"}
{"Time":"2026-10-18T00:57:53.761902418Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/unexpected-trigger-post-state-rolls-back"}
{"Time":"2026-10-18T00:57:53.761937783Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/unexpected-trigger-post-state-rolls-back","Output":"=== RUN TestSourceOperationPostgres/default/unexpected-trigger-post-state-rolls-back\n"}
{"Time":"2026-10-18T00:57:53.862942636Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/driver-error-rollback-and-private-diagnostics"}
{"Time":"2026-10-18T00:57:53.862983043Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/driver-error-rollback-and-private-diagnostics","Output":"=== RUN TestSourceOperationPostgres/default/driver-error-rollback-and-private-diagnostics\n"}
{"Time":"2026-10-18T00:57:53.945700199Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres","Output":"--- FAIL: TestSourceOperationPostgres (2.70s)\n"}
{"Time":"2026-10-18T00:57:53.945731876Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default","Output":" --- FAIL: TestSourceOperationPostgres/default (2.70s)\n"}
{"Time":"2026-10-18T00:57:53.945747476Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/create-reconcile-inverse","Output":" --- PASS: TestSourceOperationPostgres/default/create-reconcile-inverse (0.12s)\n"}
{"Time":"2026-10-18T00:57:53.945752273Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/create-reconcile-inverse","Elapsed":0.12}
{"Time":"2026-10-18T00:57:53.945758143Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/exact-raw-preexisting-restoration","Output":" --- PASS: TestSourceOperationPostgres/default/exact-raw-preexisting-restoration (0.10s)\n"}
{"Time":"2026-10-18T00:57:53.945762147Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/exact-raw-preexisting-restoration","Elapsed":0.1}
{"Time":"2026-10-18T00:57:53.945765565Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/unchanged-preexisting-survives","Output":" --- PASS: TestSourceOperationPostgres/default/unchanged-preexisting-survives (0.10s)\n"}
{"Time":"2026-10-18T00:57:53.94576937Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/unchanged-preexisting-survives","Elapsed":0.1}
{"Time":"2026-10-18T00:57:53.945772706Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/private-drift-before-apply","Output":" --- PASS: TestSourceOperationPostgres/default/private-drift-before-apply (0.09s)\n"}
{"Time":"2026-10-18T00:57:53.945776412Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/private-drift-before-apply","Elapsed":0.09}
{"Time":"2026-10-18T00:57:53.945779704Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/private-drift-before-inverse","Output":" --- PASS: TestSourceOperationPostgres/default/private-drift-before-inverse (0.09s)\n"}
{"Time":"2026-10-18T00:57:53.945783743Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/private-drift-before-inverse","Elapsed":0.09}
{"Time":"2026-10-18T00:57:53.945787089Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/linked-user-refuses-deletion","Output":" --- PASS: TestSourceOperationPostgres/default/linked-user-refuses-deletion (0.10s)\n"}
{"Time":"2026-10-18T00:57:53.945790759Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/linked-user-refuses-deletion","Elapsed":0.1}
{"Time":"2026-10-18T00:57:53.945793969Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/linked-external-refuses-deletion","Output":" --- PASS: TestSourceOperationPostgres/default/linked-external-refuses-deletion (0.10s)\n"}
{"Time":"2026-10-18T00:57:53.945797901Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/linked-external-refuses-deletion","Elapsed":0.1}
{"Time":"2026-10-18T00:57:53.945801084Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/unexpected-trigger-post-state-rolls-back","Output":" --- PASS: TestSourceOperationPostgres/default/unexpected-trigger-post-state-rolls-back (0.10s)\n"}
{"Time":"2026-10-18T00:57:53.945804988Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/unexpected-trigger-post-state-rolls-back","Elapsed":0.1}
{"Time":"2026-10-18T00:57:53.945808279Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/driver-error-rollback-and-private-diagnostics","Output":" --- FAIL: TestSourceOperationPostgres/default/driver-error-rollback-and-private-diagnostics (0.08s)\n"}
{"Time":"2026-10-18T00:57:53.947939229Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/driver-error-rollback-and-private-diagnostics","Output":"panic: interface conversion: interface {} is nil, not *trace.Task [recovered]\n"}
{"Time":"2026-10-18T00:57:53.947988932Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/driver-error-rollback-and-private-diagnostics","Output":"\tpanic: interface conversion: interface {} is nil, not *trace.Task\n"}
{"Time":"2026-10-18T00:57:53.948006543Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/driver-error-rollback-and-private-diagnostics","Output":"\n"}
{"Time":"2026-10-18T00:57:53.948014352Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/driver-error-rollback-and-private-diagnostics","Output":"goroutine 216 [running]:\n"}
{"Time":"2026-10-18T00:57:53.948032603Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/driver-error-rollback-and-private-diagnostics","Output":"testing.tRunner.func1.2({0x18a8180, 0xc0012bfe30})\n"}
{"Time":"2026-10-18T00:57:53.94804061Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/driver-error-rollback-and-private-diagnostics","Output":"\t/work/go/src/testing/testing.go:1734 +0x21c\n"}
{"Time":"2026-10-18T00:57:53.948047129Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/driver-error-rollback-and-private-diagnostics","Output":"testing.tRunner.func1()\n"}
{"Time":"2026-10-18T00:57:53.948053487Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/driver-error-rollback-and-private-diagnostics","Output":"\t/work/go/src/testing/testing.go:1737 +0x35e\n"}
{"Time":"2026-10-18T00:57:53.948063559Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/driver-error-rollback-and-private-diagnostics","Output":"panic({0x18a8180?, 0xc0012bfe30?})\n"}
{"Time":"2026-10-18T00:57:53.94807052Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/driver-error-rollback-and-private-diagnostics","Output":"\t/work/go/src/runtime/panic.go:792 +0x132\n"}
{"Time":"2026-10-18T00:57:53.94807805Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/driver-error-rollback-and-private-diagnostics","Output":"forgejo.org/models/db.TracingHook.AfterProcess({}, 0xc0012bfe00?)\n"}
{"Time":"2026-10-18T00:57:53.948084605Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/driver-error-rollback-and-private-diagnostics","Output":"\t/work/source/models/db/engine.go:343 +0x57\n"}
{"Time":"2026-10-18T00:57:53.94809153Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/driver-error-rollback-and-private-diagnostics","Output":"xorm.io/xorm/contexts.(*Hooks).AfterProcess(0x2042d60?, 0xc00050dd80)\n"}
{"Time":"2026-10-18T00:57:53.948098221Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/driver-error-rollback-and-private-diagnostics","Output":"\t/work/modules/xorm.io/xorm@v1.3.9/contexts/hook.go:75 +0x6a\n"}
{"Time":"2026-10-18T00:57:53.948119718Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/driver-error-rollback-and-private-diagnostics","Output":"xorm.io/xorm/core.(*DB).afterProcess(0xc000f801e0, 0xc00050dd80)\n"}
{"Time":"2026-10-18T00:57:53.948126932Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/driver-error-rollback-and-private-diagnostics","Output":"\t/work/modules/xorm.io/xorm@v1.3.9/core/db.go:298 +0x38\n"}
{"Time":"2026-10-18T00:57:53.948136788Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/driver-error-rollback-and-private-diagnostics","Output":"xorm.io/xorm/core.(*DB).ExecContext(0xc000f801e0, {0x2050538, 0x32ad0c0}, {0xc001f8ce00, 0x25}, {0xc001415320, 0x1, 0x1})\n"}
{"Time":"2026-10-18T00:57:53.948158303Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/driver-error-rollback-and-private-diagnostics","Output":"\t/work/modules/xorm.io/xorm@v1.3.9/core/db.go:275 +0x22a\n"}
{"Time":"2026-10-18T00:57:53.948165814Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/driver-error-rollback-and-private-diagnostics","Output":"xorm.io/xorm.(*Session).exec(0xc0017b8c30, {0xc001f8ce00, 0x25}, {0xc001415320, 0x1, 0x1})\n"}
{"Time":"2026-10-18T00:57:53.948173164Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/driver-error-rollback-and-private-diagnostics","Output":"\t/work/modules/xorm.io/xorm@v1.3.9/session_raw.go:178 +0x22b\n"}
{"Time":"2026-10-18T00:57:53.948182397Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/driver-error-rollback-and-private-diagnostics","Output":"xorm.io/xorm.(*Session).Exec(0xc0017b8c30, {0xc000422a00?, 0x47a779?, 0x20?})\n"}
{"Time":"2026-10-18T00:57:53.948189178Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/driver-error-rollback-and-private-diagnostics","Output":"\t/work/modules/xorm.io/xorm@v1.3.9/session_raw.go:196 +0x133\n"}
{"Time":"2026-10-18T00:57:53.948198538Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/driver-error-rollback-and-private-diagnostics","Output":"xorm.io/xorm.(*Engine).Exec(0x20505e0?, {0xc000422a00, 0x2, 0x2})\n"}
{"Time":"2026-10-18T00:57:53.948205364Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/driver-error-rollback-and-private-diagnostics","Output":"\t/work/modules/xorm.io/xorm@v1.3.9/engine.go:1180 +0x7f\n"}
{"Time":"2026-10-18T00:57:53.948216401Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/driver-error-rollback-and-private-diagnostics","Output":"forgejo.org/models/auth_test.TestSourceOperationPostgres.func1.8(0xc001e836c0)\n"}
{"Time":"2026-10-18T00:57:53.948225328Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/driver-error-rollback-and-private-diagnostics","Output":"\t/work/source/models/auth/source_operation_postgres_test.go:230 +0x355\n"}
{"Time":"2026-10-18T00:57:53.948234418Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/driver-error-rollback-and-private-diagnostics","Output":"forgejo.org/models/auth_test.TestSourceOperationPostgres.func1.TestSourceOperationPostgres.func1.1.17(0xc001e836c0)\n"}
{"Time":"2026-10-18T00:57:53.948243029Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/driver-error-rollback-and-private-diagnostics","Output":"\t/work/source/models/auth/source_operation_postgres_test.go:106 +0x34\n"}
{"Time":"2026-10-18T00:57:53.948253823Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/driver-error-rollback-and-private-diagnostics","Output":"testing.tRunner(0xc001e836c0, 0xc001f83cc8)\n"}
{"Time":"2026-10-18T00:57:53.948264247Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/driver-error-rollback-and-private-diagnostics","Output":"\t/work/go/src/testing/testing.go:1792 +0xf4\n"}
{"Time":"2026-10-18T00:57:53.948278016Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/driver-error-rollback-and-private-diagnostics","Output":"created by testing.(*T).Run in goroutine 75\n"}
{"Time":"2026-10-18T00:57:53.948286537Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/driver-error-rollback-and-private-diagnostics","Output":"\t/work/go/src/testing/testing.go:1851 +0x413\n"}
{"Time":"2026-10-18T00:57:53.955018288Z","Action":"fail","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/driver-error-rollback-and-private-diagnostics","Elapsed":2.9859999999999998}

View file

@ -0,0 +1,197 @@
{
"action": "suite",
"returncode": 0,
"expected_returncode": 0,
"outcome_matches": true,
"seconds": 11.5,
"argv": [
"bwrap",
"--unshare-pid",
"--die-with-parent",
"--new-session",
"--unshare-net",
"--ro-bind",
"/usr",
"/usr",
"--ro-bind",
"/lib",
"/lib",
"--ro-bind",
"/lib64",
"/lib64",
"--symlink",
"usr/bin",
"/bin",
"--proc",
"/proc",
"--dev",
"/dev",
"--tmpfs",
"/tmp",
"--bind",
"/tmp/custodian-forgejo-successor-r3",
"/work",
"--ro-bind",
"/home/worsch/go/pkg/mod/cache/download",
"/cached",
"--ro-bind",
"/etc/ssl/certs",
"/etc/ssl/certs",
"--ro-bind",
"/etc/resolv.conf",
"/etc/resolv.conf",
"--chdir",
"/work/source",
"--clearenv",
"--ro-bind",
"/tmp/custodian-forgejo-successor-attempt2/modules",
"/work/modules",
"--bind",
"/tmp/custodian-forgejo-successor-attempt2/gocache",
"/work/gocache",
"--dir",
"/run",
"--ro-bind",
"/tmp/custodian-forgejo-successor-r3/descriptor-fixtures",
"/run/forgejo-oidc",
"--bind",
"/tmp/custodian-forgejo-successor-r3/descriptor-fixtures",
"/run/writable-input",
"--setenv",
"PATH",
"/work/go/bin:/usr/bin:/bin",
"--setenv",
"HOME",
"/work/home",
"--setenv",
"GOPATH",
"/work/gopath",
"--setenv",
"GOTOOLCHAIN",
"local",
"--setenv",
"GOPROXY",
"off",
"--setenv",
"GOSUMDB",
"off",
"--setenv",
"GOVCS",
"*:off",
"--setenv",
"GOMODCACHE",
"/work/modules",
"--setenv",
"GOCACHE",
"/work/gocache",
"--setenv",
"GOMAXPROCS",
"4",
"--setenv",
"CGO_ENABLED",
"1",
"--setenv",
"GIT_CONFIG_NOSYSTEM",
"1",
"--setenv",
"GIT_CONFIG_GLOBAL",
"/work/home/test.gitconfig",
"--setenv",
"GIT_TERMINAL_PROMPT",
"0",
"--ro-bind",
"/tmp/custodian-forgejo-postgres-tests-r1-attempt4/auth",
"/work/source/models/auth",
"--bind",
"/tmp/custodian-forgejo-postgres-tests-r1-attempt4",
"/pg-work",
"--dir",
"/run",
"--ro-bind",
"/tmp/custodian-forgejo-postgres-r1-attempt3/socket",
"/run/source-operation-postgres",
"--setenv",
"CUSTODIAN_PG_SOCKET",
"/run/source-operation-postgres",
"--ro-bind",
"/tmp/custodian-forgejo-postgres-tests-r1-attempt4/db",
"/work/source/models/db",
"--",
"go",
"tool",
"test2json",
"-t",
"-p",
"forgejo.org/models/auth",
"/pg-work/models-auth.test",
"-test.v",
"-test.run=^TestSourceOperationPostgres$",
"-test.count=1"
],
"workspace": "/tmp/custodian-forgejo-postgres-tests-r1-attempt4",
"source_pins": {
"access_token.go": "sha256:c3131e03c24356fb09fdd600efd17d8054063534355a4c5a3b769f840a58c8ac",
"access_token_scope.go": "sha256:36173156237cc3c3231da78fc9c7e503391ea29c29496721bf4f6b197ab128d3",
"access_token_scope_test.go": "sha256:738bff8f60339a3b4cbd21c31f52812eacde1435fcf55ea657c2a950c262de7d",
"access_token_test.go": "sha256:0121b13b075e6dadb5f6bf5899ceb815786d386cd75214566545b1a3cbe5e721",
"auth_token.go": "sha256:e652217daeffab3c9918efaab56ba4a0a0e8024071840cd8bb85925fe2568bd9",
"main_test.go": "sha256:1c78be2861df2215936939b085bc2bac431f607731fe68da85cfc9c95a4eac87",
"oauth2.go": "sha256:626c075138a8e1dd22d4814b11c6d6acd04e8aae2443e47017de9a289b8f55ac",
"oauth2_list.go": "sha256:2665b0833370d4cb9d0a30e43bd86625f4f707e26a8e5bef53559816aafb7e91",
"oauth2_test.go": "sha256:66e671311715001e2c8119daa944667b9744b4a701732007c6f4510d1daf40ca",
"session.go": "sha256:25d934eb96d2b540a51b7337650b58123ad4ee7e1c61547e7efc1c36eb12c26d",
"session_test.go": "sha256:cae8e667a88143cf7ce3238e8adc9e87fd7f0bdf1b2c0d9b1736c2de38485659",
"source.go": "sha256:33ec2f66652bcb442cd80c36db0a2ad7305e1ee9c9c610d054720eea8ab18e4c",
"source_operation.go": "sha256:ef1b07ef6cf454015d00cde8588835f5118d829da91eb0303d37184859345a31",
"source_operation_internal_test.go": "sha256:af0f424d3a1fd2b29793b64baa1fa07284fee7ea0b7721c503db4efac0d871cb",
"source_operation_postgres_export_test.go": "sha256:b9d1553144766b15c408295b87506106935abf4ed61460598b58dc81825e808d",
"source_operation_postgres_test.go": "sha256:4a37504e5af00580d114ef1bed5cb32e09e4ec2de5fd3192adef043a4ea5f7fe",
"source_operation_process_test.go": "sha256:40d33b11a01cb659f0bf6f8b545c4d79910e8c082a789060bcbc9cadeee965bd",
"source_operation_test.go": "sha256:77d311bca42f48faf3fbdc15c53582e3d8a6d9108a72ed7bb6172e5b88951428",
"source_test.go": "sha256:1ad3f9b198155193fd8193f50084889cc949192abf64c060a5ce3043f2ccb212",
"two_factor.go": "sha256:d3a6e0b348b225d0fc012fdd5a6275736a1b324ec4cd1c013ae80a12531e0b8e",
"two_factor_test.go": "sha256:6a88cb12d204a3b3de49d584d589b1c5a97bfb795160ae93b87707f64bece4fe",
"twofactor.go": "sha256:905e1679be552346758b34c8ee7c950628d965d8bd3946b9b63c6797f41625d6",
"webauthn.go": "sha256:0f9adac61a225854d579ed71338303a30a5abf26e4c115a0afefaa4fd199200e",
"webauthn_test.go": "sha256:03f3487f7c05566e71399ff548a95400a66ed7afc96bbf31365aa7abb79dfa69"
},
"database_source_pins": {
"collation.go": "sha256:9922312734c5cc2a5474b322b88214586916b320969172708f48c7b6eca40e7d",
"common.go": "sha256:f0c626ebedaedb8681a4f3a3531441c49f3e0d305b20730aa47b267b6e16b3fd",
"consistency.go": "sha256:c771f62de8511bfc307583a4585190aba8b38ca2ac76eab200bc901aa15b7bad",
"context.go": "sha256:d4c4acfcb8987071aecf5cd957b3821c8d2619a2696398d37c2970f2527686f7",
"context_committer_test.go": "sha256:83cf7fbfc32aff358221abadee63e96a803a4136c9851cf696c543dc5176d777",
"context_test.go": "sha256:677f6be23f1c855a154de6078a540b60e17c737becfae6115e55ff6d81c3a937",
"convert.go": "sha256:48e62893b598b767dccbf414c0acffbc26c6cfb6cb22ba79eb5b66dbb6c8193a",
"engine.go": "sha256:d21a5b0b9ca37ac48222b79007467a232abc38edda99b3c5f54f1f4c5ab795e8",
"engine_test.go": "sha256:ec78585da5d8b33deb0b55ba3ffd9d8ff4df704ffd62c2d95c2a6ffddd5bc309",
"error.go": "sha256:ca0ead3529d977f90930974200a0a751366629590dae516cb54245d9c75bb280",
"index.go": "sha256:fdfdaf6da41f317d51665bfc03684074aadf5fb32607d80c15ee9b33fdc89f09",
"index_test.go": "sha256:d46ea9d96fc9b51e477ebecb5cfa0e15fc8e13a00c5c84ce620dd23e73663558",
"iterate.go": "sha256:0512e2f2a3785daec26f434f6b55c37e8cd590c1b49d2068f42160c424757e28",
"iterate_test.go": "sha256:8b9eb9d391bd99bddf6b3da5744bd80088eb4d8446c7f51dd3299abe1b8a5ebe",
"list.go": "sha256:e23e7056f9dbce52d85ca922fa4eadb834a6ee3a5dbcafe82485038332b798e0",
"list_test.go": "sha256:5bc42a869931470daf503b51bd3dbf5cb092d37d8cc4e03f80a21f564beadf6a",
"log.go": "sha256:6f080111c46868e337d4d6dd16c56a5743c13b86b412df219701030cd1718a01",
"main_test.go": "sha256:d9eb5ba4ab294ebb2c865969479d6d73db21669f24cc5454ac42f6dbd8825ef3",
"name.go": "sha256:e486e89a36103f56af54f5f39a9b166ac0b08800abaccc2857ab324777dda6b5",
"search.go": "sha256:b488e9a93f95d28450929896ce648e67f6772e1cd8662f7a0a1a8988a24dbfa2",
"sensitive_sql.go": "sha256:06a298d0d6e628e6920384d4ddeef449e40c090841ebaa3f6d175725a45ae584",
"sensitive_sql_logging_test.go": "sha256:d924b35d30686473caf29601cf51cc363ba68158cb4ef0981c9e2fc7b03c04b7",
"sensitive_sql_test.go": "sha256:de6353c955047c3311747e4777b9f9b2195e9efb19160b971dd758dfc94cf31b",
"sequence.go": "sha256:c0e4c7fbaa93961d9711143cfcf4bbb32f197985d21b77424946fbe3a39b38eb",
"sql_postgres_with_schema.go": "sha256:e5941e859ada7831b400fd3143e58f91b1058cb32779d6a4466af01617cf6e7a",
"tracing_context_test.go": "sha256:53d35e31ae9f318d8f77a323fdc5b18bae804bdc86ccb639f335dfbe59e9b17c"
},
"original_composite_patch": "sha256:15cb7f13b1b1d1095cc344176ca337f705333a436a70ae803fcfd3d7f802ccf4",
"runtime": "custodian-forgejo-pg-96ce905f445a",
"image_id": "sha256:57c72fd2a128e416c7fcc499958864df5301e940bca0a56f58fddf30ffc07777",
"controlled_mutation": {
"mutation": "none"
},
"network": "disabled; only the exact disposable database Unix socket is bound",
"production_database": false,
"actual_authenticated_operation": false,
"real_credentials": false,
"test_binary_sha256": "sha256:ea124dc75fa8c4d4063fdd2df57e506c1cd53e3c4478597e2d51b5c214de7569"
}

View file

@ -0,0 +1,165 @@
{"Time":"2026-10-18T01:00:36.620730123Z","Action":"start","Package":"forgejo.org/models/auth"}
{"Time":"2026-10-18T01:00:36.784427451Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:00:36 ...s/storage/storage.go:157:initAttachments() [I] Initialising Attachment storage with type: local\n"}
{"Time":"2026-10-18T01:00:36.784508408Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:00:36 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata2682928195/attachments\n"}
{"Time":"2026-10-18T01:00:36.784514847Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:00:36 ...s/storage/storage.go:147:initAvatars() [I] Initialising Avatar storage with type: local\n"}
{"Time":"2026-10-18T01:00:36.784523846Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:00:36 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata2682928195/avatars\n"}
{"Time":"2026-10-18T01:00:36.784529067Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:00:36 ...s/storage/storage.go:173:initRepoAvatars() [I] Initialising Repository Avatar storage with type: local\n"}
{"Time":"2026-10-18T01:00:36.784534207Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:00:36 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata2682928195/repo-avatars\n"}
{"Time":"2026-10-18T01:00:36.784538995Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:00:36 ...s/storage/storage.go:179:initRepoArchives() [I] Initialising Repository Archive storage with type: local\n"}
{"Time":"2026-10-18T01:00:36.78454372Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:00:36 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata2682928195/repo-archive\n"}
{"Time":"2026-10-18T01:00:36.784548436Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:00:36 ...s/storage/storage.go:189:initPackages() [I] Initialising Packages storage with type: local\n"}
{"Time":"2026-10-18T01:00:36.784553089Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:00:36 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata2682928195/packages\n"}
{"Time":"2026-10-18T01:00:36.784557687Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:00:36 ...s/storage/storage.go:200:initActions() [I] Initialising Actions storage with type: local\n"}
{"Time":"2026-10-18T01:00:36.78456225Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:00:36 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata2682928195/actions_log\n"}
{"Time":"2026-10-18T01:00:36.784566867Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:00:36 ...s/storage/storage.go:204:initActions() [I] Initialising ActionsArtifacts storage with type: local\n"}
{"Time":"2026-10-18T01:00:36.784571475Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:00:36 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /pg-work/data/actions_artifacts\n"}
{"Time":"2026-10-18T01:00:36.903132953Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres"}
{"Time":"2026-10-18T01:00:36.903208733Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres","Output":"=== RUN TestSourceOperationPostgres\n"}
{"Time":"2026-10-18T01:00:36.903228752Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default"}
{"Time":"2026-10-18T01:00:36.903366463Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default","Output":"=== RUN TestSourceOperationPostgres/default\n"}
{"Time":"2026-10-18T01:00:39.109392342Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/create-reconcile-inverse"}
{"Time":"2026-10-18T01:00:39.109536789Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/create-reconcile-inverse","Output":"=== RUN TestSourceOperationPostgres/default/create-reconcile-inverse\n"}
{"Time":"2026-10-18T01:00:39.256485133Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/exact-raw-preexisting-restoration"}
{"Time":"2026-10-18T01:00:39.25654031Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/exact-raw-preexisting-restoration","Output":"=== RUN TestSourceOperationPostgres/default/exact-raw-preexisting-restoration\n"}
{"Time":"2026-10-18T01:00:39.392573659Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/unchanged-preexisting-survives"}
{"Time":"2026-10-18T01:00:39.392629656Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/unchanged-preexisting-survives","Output":"=== RUN TestSourceOperationPostgres/default/unchanged-preexisting-survives\n"}
{"Time":"2026-10-18T01:00:39.510266053Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/private-drift-before-apply"}
{"Time":"2026-10-18T01:00:39.510317848Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/private-drift-before-apply","Output":"=== RUN TestSourceOperationPostgres/default/private-drift-before-apply\n"}
{"Time":"2026-10-18T01:00:39.623787643Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/private-drift-before-inverse"}
{"Time":"2026-10-18T01:00:39.623827409Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/private-drift-before-inverse","Output":"=== RUN TestSourceOperationPostgres/default/private-drift-before-inverse\n"}
{"Time":"2026-10-18T01:00:39.736117733Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/linked-user-refuses-deletion"}
{"Time":"2026-10-18T01:00:39.736163586Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/linked-user-refuses-deletion","Output":"=== RUN TestSourceOperationPostgres/default/linked-user-refuses-deletion\n"}
{"Time":"2026-10-18T01:00:39.84999188Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/linked-external-refuses-deletion"}
{"Time":"2026-10-18T01:00:39.850032557Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/linked-external-refuses-deletion","Output":"=== RUN TestSourceOperationPostgres/default/linked-external-refuses-deletion\n"}
{"Time":"2026-10-18T01:00:39.969798121Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/unexpected-trigger-post-state-rolls-back"}
{"Time":"2026-10-18T01:00:39.969845904Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/unexpected-trigger-post-state-rolls-back","Output":"=== RUN TestSourceOperationPostgres/default/unexpected-trigger-post-state-rolls-back\n"}
{"Time":"2026-10-18T01:00:40.085454914Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/driver-error-rollback-and-private-diagnostics"}
{"Time":"2026-10-18T01:00:40.085499351Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/driver-error-rollback-and-private-diagnostics","Output":"=== RUN TestSourceOperationPostgres/default/driver-error-rollback-and-private-diagnostics\n"}
{"Time":"2026-10-18T01:00:40.205181631Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/uncooperative-writers-excluded"}
{"Time":"2026-10-18T01:00:40.205225798Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/uncooperative-writers-excluded","Output":"=== RUN TestSourceOperationPostgres/default/uncooperative-writers-excluded\n"}
{"Time":"2026-10-18T01:00:40.921813572Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/concurrent-preparation-has-one-owner"}
{"Time":"2026-10-18T01:00:40.921863446Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/concurrent-preparation-has-one-owner","Output":"=== RUN TestSourceOperationPostgres/default/concurrent-preparation-has-one-owner\n"}
{"Time":"2026-10-18T01:00:41.045454997Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public"}
{"Time":"2026-10-18T01:00:41.045542509Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public","Output":"=== RUN TestSourceOperationPostgres/public\n"}
{"Time":"2026-10-18T01:00:42.870327539Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/create-reconcile-inverse"}
{"Time":"2026-10-18T01:00:42.870372697Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/create-reconcile-inverse","Output":"=== RUN TestSourceOperationPostgres/public/create-reconcile-inverse\n"}
{"Time":"2026-10-18T01:00:43.001004999Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/exact-raw-preexisting-restoration"}
{"Time":"2026-10-18T01:00:43.00104508Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/exact-raw-preexisting-restoration","Output":"=== RUN TestSourceOperationPostgres/public/exact-raw-preexisting-restoration\n"}
{"Time":"2026-10-18T01:00:43.105088518Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/unchanged-preexisting-survives"}
{"Time":"2026-10-18T01:00:43.105147166Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/unchanged-preexisting-survives","Output":"=== RUN TestSourceOperationPostgres/public/unchanged-preexisting-survives\n"}
{"Time":"2026-10-18T01:00:43.209857825Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/private-drift-before-apply"}
{"Time":"2026-10-18T01:00:43.209898402Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/private-drift-before-apply","Output":"=== RUN TestSourceOperationPostgres/public/private-drift-before-apply\n"}
{"Time":"2026-10-18T01:00:43.300085634Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/private-drift-before-inverse"}
{"Time":"2026-10-18T01:00:43.30013036Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/private-drift-before-inverse","Output":"=== RUN TestSourceOperationPostgres/public/private-drift-before-inverse\n"}
{"Time":"2026-10-18T01:00:43.399606765Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/linked-user-refuses-deletion"}
{"Time":"2026-10-18T01:00:43.399652473Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/linked-user-refuses-deletion","Output":"=== RUN TestSourceOperationPostgres/public/linked-user-refuses-deletion\n"}
{"Time":"2026-10-18T01:00:43.499626237Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/linked-external-refuses-deletion"}
{"Time":"2026-10-18T01:00:43.499669736Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/linked-external-refuses-deletion","Output":"=== RUN TestSourceOperationPostgres/public/linked-external-refuses-deletion\n"}
{"Time":"2026-10-18T01:00:43.59826031Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/unexpected-trigger-post-state-rolls-back"}
{"Time":"2026-10-18T01:00:43.59834371Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/unexpected-trigger-post-state-rolls-back","Output":"=== RUN TestSourceOperationPostgres/public/unexpected-trigger-post-state-rolls-back\n"}
{"Time":"2026-10-18T01:00:43.69218378Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/driver-error-rollback-and-private-diagnostics"}
{"Time":"2026-10-18T01:00:43.692234718Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/driver-error-rollback-and-private-diagnostics","Output":"=== RUN TestSourceOperationPostgres/public/driver-error-rollback-and-private-diagnostics\n"}
{"Time":"2026-10-18T01:00:43.794643228Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/uncooperative-writers-excluded"}
{"Time":"2026-10-18T01:00:43.794685663Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/uncooperative-writers-excluded","Output":"=== RUN TestSourceOperationPostgres/public/uncooperative-writers-excluded\n"}
{"Time":"2026-10-18T01:00:44.495231495Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/concurrent-preparation-has-one-owner"}
{"Time":"2026-10-18T01:00:44.495267474Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/concurrent-preparation-has-one-owner","Output":"=== RUN TestSourceOperationPostgres/public/concurrent-preparation-has-one-owner\n"}
{"Time":"2026-10-18T01:00:44.596410773Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named"}
{"Time":"2026-10-18T01:00:44.596500062Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named","Output":"=== RUN TestSourceOperationPostgres/named\n"}
{"Time":"2026-10-18T01:00:46.266037797Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/create-reconcile-inverse"}
{"Time":"2026-10-18T01:00:46.266073334Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/create-reconcile-inverse","Output":"=== RUN TestSourceOperationPostgres/named/create-reconcile-inverse\n"}
{"Time":"2026-10-18T01:00:46.38746905Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/exact-raw-preexisting-restoration"}
{"Time":"2026-10-18T01:00:46.387518347Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/exact-raw-preexisting-restoration","Output":"=== RUN TestSourceOperationPostgres/named/exact-raw-preexisting-restoration\n"}
{"Time":"2026-10-18T01:00:46.493663624Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/unchanged-preexisting-survives"}
{"Time":"2026-10-18T01:00:46.493727539Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/unchanged-preexisting-survives","Output":"=== RUN TestSourceOperationPostgres/named/unchanged-preexisting-survives\n"}
{"Time":"2026-10-18T01:00:46.597182621Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/private-drift-before-apply"}
{"Time":"2026-10-18T01:00:46.597235336Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/private-drift-before-apply","Output":"=== RUN TestSourceOperationPostgres/named/private-drift-before-apply\n"}
{"Time":"2026-10-18T01:00:50.271070695Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/private-drift-before-inverse"}
{"Time":"2026-10-18T01:00:50.271117413Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/private-drift-before-inverse","Output":"=== RUN TestSourceOperationPostgres/named/private-drift-before-inverse\n"}
{"Time":"2026-10-18T01:00:50.367624615Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/linked-user-refuses-deletion"}
{"Time":"2026-10-18T01:00:50.367690522Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/linked-user-refuses-deletion","Output":"=== RUN TestSourceOperationPostgres/named/linked-user-refuses-deletion\n"}
{"Time":"2026-10-18T01:00:50.478160697Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/linked-external-refuses-deletion"}
{"Time":"2026-10-18T01:00:50.478209977Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/linked-external-refuses-deletion","Output":"=== RUN TestSourceOperationPostgres/named/linked-external-refuses-deletion\n"}
{"Time":"2026-10-18T01:00:50.574002056Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/unexpected-trigger-post-state-rolls-back"}
{"Time":"2026-10-18T01:00:50.574044897Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/unexpected-trigger-post-state-rolls-back","Output":"=== RUN TestSourceOperationPostgres/named/unexpected-trigger-post-state-rolls-back\n"}
{"Time":"2026-10-18T01:00:50.67009112Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/driver-error-rollback-and-private-diagnostics"}
{"Time":"2026-10-18T01:00:50.670144881Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/driver-error-rollback-and-private-diagnostics","Output":"=== RUN TestSourceOperationPostgres/named/driver-error-rollback-and-private-diagnostics\n"}
{"Time":"2026-10-18T01:00:50.773203358Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/uncooperative-writers-excluded"}
{"Time":"2026-10-18T01:00:50.773243368Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/uncooperative-writers-excluded","Output":"=== RUN TestSourceOperationPostgres/named/uncooperative-writers-excluded\n"}
{"Time":"2026-10-18T01:00:51.478348048Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/concurrent-preparation-has-one-owner"}
{"Time":"2026-10-18T01:00:51.478411989Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/concurrent-preparation-has-one-owner","Output":"=== RUN TestSourceOperationPostgres/named/concurrent-preparation-has-one-owner\n"}
{"Time":"2026-10-18T01:00:51.582072541Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres","Output":"--- PASS: TestSourceOperationPostgres (11.10s)\n"}
{"Time":"2026-10-18T01:00:51.582145924Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default","Output":" --- PASS: TestSourceOperationPostgres/default (4.14s)\n"}
{"Time":"2026-10-18T01:00:51.582159422Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/create-reconcile-inverse","Output":" --- PASS: TestSourceOperationPostgres/default/create-reconcile-inverse (0.15s)\n"}
{"Time":"2026-10-18T01:00:51.58216981Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/create-reconcile-inverse","Elapsed":0.15}
{"Time":"2026-10-18T01:00:51.582408966Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/exact-raw-preexisting-restoration","Output":" --- PASS: TestSourceOperationPostgres/default/exact-raw-preexisting-restoration (0.14s)\n"}
{"Time":"2026-10-18T01:00:51.582431256Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/exact-raw-preexisting-restoration","Elapsed":0.14}
{"Time":"2026-10-18T01:00:51.582438984Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/unchanged-preexisting-survives","Output":" --- PASS: TestSourceOperationPostgres/default/unchanged-preexisting-survives (0.12s)\n"}
{"Time":"2026-10-18T01:00:51.582466721Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/unchanged-preexisting-survives","Elapsed":0.12}
{"Time":"2026-10-18T01:00:51.582477172Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/private-drift-before-apply","Output":" --- PASS: TestSourceOperationPostgres/default/private-drift-before-apply (0.11s)\n"}
{"Time":"2026-10-18T01:00:51.582486126Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/private-drift-before-apply","Elapsed":0.11}
{"Time":"2026-10-18T01:00:51.582491329Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/private-drift-before-inverse","Output":" --- PASS: TestSourceOperationPostgres/default/private-drift-before-inverse (0.11s)\n"}
{"Time":"2026-10-18T01:00:51.582499328Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/private-drift-before-inverse","Elapsed":0.11}
{"Time":"2026-10-18T01:00:51.582505351Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/linked-user-refuses-deletion","Output":" --- PASS: TestSourceOperationPostgres/default/linked-user-refuses-deletion (0.11s)\n"}
{"Time":"2026-10-18T01:00:51.582512745Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/linked-user-refuses-deletion","Elapsed":0.11}
{"Time":"2026-10-18T01:00:51.582518444Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/linked-external-refuses-deletion","Output":" --- PASS: TestSourceOperationPostgres/default/linked-external-refuses-deletion (0.12s)\n"}
{"Time":"2026-10-18T01:00:51.582528165Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/linked-external-refuses-deletion","Elapsed":0.12}
{"Time":"2026-10-18T01:00:51.582533025Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/unexpected-trigger-post-state-rolls-back","Output":" --- PASS: TestSourceOperationPostgres/default/unexpected-trigger-post-state-rolls-back (0.12s)\n"}
{"Time":"2026-10-18T01:00:51.582542448Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/unexpected-trigger-post-state-rolls-back","Elapsed":0.12}
{"Time":"2026-10-18T01:00:51.582547804Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/driver-error-rollback-and-private-diagnostics","Output":" --- PASS: TestSourceOperationPostgres/default/driver-error-rollback-and-private-diagnostics (0.12s)\n"}
{"Time":"2026-10-18T01:00:51.582553431Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/driver-error-rollback-and-private-diagnostics","Elapsed":0.12}
{"Time":"2026-10-18T01:00:51.582560924Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/uncooperative-writers-excluded","Output":" --- PASS: TestSourceOperationPostgres/default/uncooperative-writers-excluded (0.72s)\n"}
{"Time":"2026-10-18T01:00:51.582607832Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/uncooperative-writers-excluded","Elapsed":0.72}
{"Time":"2026-10-18T01:00:51.582615785Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/concurrent-preparation-has-one-owner","Output":" --- PASS: TestSourceOperationPostgres/default/concurrent-preparation-has-one-owner (0.12s)\n"}
{"Time":"2026-10-18T01:00:51.582626029Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/concurrent-preparation-has-one-owner","Elapsed":0.12}
{"Time":"2026-10-18T01:00:51.582630997Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default","Elapsed":4.14}
{"Time":"2026-10-18T01:00:51.582643955Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public","Output":" --- PASS: TestSourceOperationPostgres/public (3.55s)\n"}
{"Time":"2026-10-18T01:00:51.582653811Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/create-reconcile-inverse","Output":" --- PASS: TestSourceOperationPostgres/public/create-reconcile-inverse (0.13s)\n"}
{"Time":"2026-10-18T01:00:51.582660718Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/create-reconcile-inverse","Elapsed":0.13}
{"Time":"2026-10-18T01:00:51.582668861Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/exact-raw-preexisting-restoration","Output":" --- PASS: TestSourceOperationPostgres/public/exact-raw-preexisting-restoration (0.10s)\n"}
{"Time":"2026-10-18T01:00:51.582674515Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/exact-raw-preexisting-restoration","Elapsed":0.1}
{"Time":"2026-10-18T01:00:51.582679249Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/unchanged-preexisting-survives","Output":" --- PASS: TestSourceOperationPostgres/public/unchanged-preexisting-survives (0.10s)\n"}
{"Time":"2026-10-18T01:00:51.582690376Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/unchanged-preexisting-survives","Elapsed":0.1}
{"Time":"2026-10-18T01:00:51.582695741Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/private-drift-before-apply","Output":" --- PASS: TestSourceOperationPostgres/public/private-drift-before-apply (0.09s)\n"}
{"Time":"2026-10-18T01:00:51.582704371Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/private-drift-before-apply","Elapsed":0.09}
{"Time":"2026-10-18T01:00:51.582708843Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/private-drift-before-inverse","Output":" --- PASS: TestSourceOperationPostgres/public/private-drift-before-inverse (0.10s)\n"}
{"Time":"2026-10-18T01:00:51.582717491Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/private-drift-before-inverse","Elapsed":0.1}
{"Time":"2026-10-18T01:00:51.582722423Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/linked-user-refuses-deletion","Output":" --- PASS: TestSourceOperationPostgres/public/linked-user-refuses-deletion (0.10s)\n"}
{"Time":"2026-10-18T01:00:51.582731242Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/linked-user-refuses-deletion","Elapsed":0.1}
{"Time":"2026-10-18T01:00:51.582745354Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/linked-external-refuses-deletion","Output":" --- PASS: TestSourceOperationPostgres/public/linked-external-refuses-deletion (0.10s)\n"}
{"Time":"2026-10-18T01:00:51.582753803Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/linked-external-refuses-deletion","Elapsed":0.1}
{"Time":"2026-10-18T01:00:51.582759845Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/unexpected-trigger-post-state-rolls-back","Output":" --- PASS: TestSourceOperationPostgres/public/unexpected-trigger-post-state-rolls-back (0.09s)\n"}
{"Time":"2026-10-18T01:00:51.58276512Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/unexpected-trigger-post-state-rolls-back","Elapsed":0.09}
{"Time":"2026-10-18T01:00:51.582769989Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/driver-error-rollback-and-private-diagnostics","Output":" --- PASS: TestSourceOperationPostgres/public/driver-error-rollback-and-private-diagnostics (0.10s)\n"}
{"Time":"2026-10-18T01:00:51.58278586Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/driver-error-rollback-and-private-diagnostics","Elapsed":0.1}
{"Time":"2026-10-18T01:00:51.582791793Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/uncooperative-writers-excluded","Output":" --- PASS: TestSourceOperationPostgres/public/uncooperative-writers-excluded (0.70s)\n"}
{"Time":"2026-10-18T01:00:51.582801054Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/uncooperative-writers-excluded","Elapsed":0.7}
{"Time":"2026-10-18T01:00:51.582805788Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/concurrent-preparation-has-one-owner","Output":" --- PASS: TestSourceOperationPostgres/public/concurrent-preparation-has-one-owner (0.10s)\n"}
{"Time":"2026-10-18T01:00:51.582811315Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/concurrent-preparation-has-one-owner","Elapsed":0.1}
{"Time":"2026-10-18T01:00:51.58281586Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public","Elapsed":3.55}
{"Time":"2026-10-18T01:00:51.582820297Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named","Output":" --- PASS: TestSourceOperationPostgres/named (3.40s)\n"}
{"Time":"2026-10-18T01:00:51.582825761Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/create-reconcile-inverse","Output":" --- PASS: TestSourceOperationPostgres/named/create-reconcile-inverse (0.12s)\n"}
{"Time":"2026-10-18T01:00:51.582831216Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/create-reconcile-inverse","Elapsed":0.12}
{"Time":"2026-10-18T01:00:51.582836978Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/exact-raw-preexisting-restoration","Output":" --- PASS: TestSourceOperationPostgres/named/exact-raw-preexisting-restoration (0.11s)\n"}
{"Time":"2026-10-18T01:00:51.582842407Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/exact-raw-preexisting-restoration","Elapsed":0.11}
{"Time":"2026-10-18T01:00:51.582851181Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/unchanged-preexisting-survives","Output":" --- PASS: TestSourceOperationPostgres/named/unchanged-preexisting-survives (0.10s)\n"}
{"Time":"2026-10-18T01:00:51.582883976Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/unchanged-preexisting-survives","Elapsed":0.1}
{"Time":"2026-10-18T01:00:51.582894689Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/private-drift-before-apply","Output":" --- PASS: TestSourceOperationPostgres/named/private-drift-before-apply (0.09s)\n"}
{"Time":"2026-10-18T01:00:51.582900469Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/private-drift-before-apply","Elapsed":0.09}
{"Time":"2026-10-18T01:00:51.582905221Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/private-drift-before-inverse","Output":" --- PASS: TestSourceOperationPostgres/named/private-drift-before-inverse (0.10s)\n"}
{"Time":"2026-10-18T01:00:51.582917232Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/private-drift-before-inverse","Elapsed":0.1}
{"Time":"2026-10-18T01:00:51.582922904Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/linked-user-refuses-deletion","Output":" --- PASS: TestSourceOperationPostgres/named/linked-user-refuses-deletion (0.11s)\n"}
{"Time":"2026-10-18T01:00:51.582935853Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/linked-user-refuses-deletion","Elapsed":0.11}
{"Time":"2026-10-18T01:00:51.58295955Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/linked-external-refuses-deletion","Output":" --- PASS: TestSourceOperationPostgres/named/linked-external-refuses-deletion (0.10s)\n"}
{"Time":"2026-10-18T01:00:51.582965736Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/linked-external-refuses-deletion","Elapsed":0.1}
{"Time":"2026-10-18T01:00:51.582970713Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/unexpected-trigger-post-state-rolls-back","Output":" --- PASS: TestSourceOperationPostgres/named/unexpected-trigger-post-state-rolls-back (0.10s)\n"}
{"Time":"2026-10-18T01:00:51.582975934Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/unexpected-trigger-post-state-rolls-back","Elapsed":0.1}
{"Time":"2026-10-18T01:00:51.582992923Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/driver-error-rollback-and-private-diagnostics","Output":" --- PASS: TestSourceOperationPostgres/named/driver-error-rollback-and-private-diagnostics (0.10s)\n"}
{"Time":"2026-10-18T01:00:51.583000678Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/driver-error-rollback-and-private-diagnostics","Elapsed":0.1}
{"Time":"2026-10-18T01:00:51.583005917Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/uncooperative-writers-excluded","Output":" --- PASS: TestSourceOperationPostgres/named/uncooperative-writers-excluded (0.70s)\n"}
{"Time":"2026-10-18T01:00:51.58301203Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/uncooperative-writers-excluded","Elapsed":0.7}
{"Time":"2026-10-18T01:00:51.583027143Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/concurrent-preparation-has-one-owner","Output":" --- PASS: TestSourceOperationPostgres/named/concurrent-preparation-has-one-owner (0.10s)\n"}
{"Time":"2026-10-18T01:00:51.583035277Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/concurrent-preparation-has-one-owner","Elapsed":0.1}
{"Time":"2026-10-18T01:00:51.583040308Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named","Elapsed":3.4}
{"Time":"2026-10-18T01:00:51.583044583Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres","Elapsed":11.1}
{"Time":"2026-10-18T01:00:51.583048983Z","Action":"output","Package":"forgejo.org/models/auth","Output":"PASS\n"}
{"Time":"2026-10-18T01:00:51.610940014Z","Action":"pass","Package":"forgejo.org/models/auth","Elapsed":11.409}

View file

@ -0,0 +1,200 @@
{
"action": "suite",
"returncode": 1,
"expected_returncode": 1,
"outcome_matches": true,
"seconds": 9.69,
"argv": [
"bwrap",
"--unshare-pid",
"--die-with-parent",
"--new-session",
"--unshare-net",
"--ro-bind",
"/usr",
"/usr",
"--ro-bind",
"/lib",
"/lib",
"--ro-bind",
"/lib64",
"/lib64",
"--symlink",
"usr/bin",
"/bin",
"--proc",
"/proc",
"--dev",
"/dev",
"--tmpfs",
"/tmp",
"--bind",
"/tmp/custodian-forgejo-successor-r3",
"/work",
"--ro-bind",
"/home/worsch/go/pkg/mod/cache/download",
"/cached",
"--ro-bind",
"/etc/ssl/certs",
"/etc/ssl/certs",
"--ro-bind",
"/etc/resolv.conf",
"/etc/resolv.conf",
"--chdir",
"/work/source",
"--clearenv",
"--ro-bind",
"/tmp/custodian-forgejo-successor-attempt2/modules",
"/work/modules",
"--bind",
"/tmp/custodian-forgejo-successor-attempt2/gocache",
"/work/gocache",
"--dir",
"/run",
"--ro-bind",
"/tmp/custodian-forgejo-successor-r3/descriptor-fixtures",
"/run/forgejo-oidc",
"--bind",
"/tmp/custodian-forgejo-successor-r3/descriptor-fixtures",
"/run/writable-input",
"--setenv",
"PATH",
"/work/go/bin:/usr/bin:/bin",
"--setenv",
"HOME",
"/work/home",
"--setenv",
"GOPATH",
"/work/gopath",
"--setenv",
"GOTOOLCHAIN",
"local",
"--setenv",
"GOPROXY",
"off",
"--setenv",
"GOSUMDB",
"off",
"--setenv",
"GOVCS",
"*:off",
"--setenv",
"GOMODCACHE",
"/work/modules",
"--setenv",
"GOCACHE",
"/work/gocache",
"--setenv",
"GOMAXPROCS",
"4",
"--setenv",
"CGO_ENABLED",
"1",
"--setenv",
"GIT_CONFIG_NOSYSTEM",
"1",
"--setenv",
"GIT_CONFIG_GLOBAL",
"/work/home/test.gitconfig",
"--setenv",
"GIT_TERMINAL_PROMPT",
"0",
"--ro-bind",
"/tmp/custodian-forgejo-postgres-tests-r1-control-lock/auth",
"/work/source/models/auth",
"--bind",
"/tmp/custodian-forgejo-postgres-tests-r1-control-lock",
"/pg-work",
"--dir",
"/run",
"--ro-bind",
"/tmp/custodian-forgejo-postgres-r1-attempt3/socket",
"/run/source-operation-postgres",
"--setenv",
"CUSTODIAN_PG_SOCKET",
"/run/source-operation-postgres",
"--ro-bind",
"/tmp/custodian-forgejo-postgres-tests-r1-control-lock/db",
"/work/source/models/db",
"--",
"go",
"tool",
"test2json",
"-t",
"-p",
"forgejo.org/models/auth",
"/pg-work/models-auth.test",
"-test.v",
"-test.run=^TestSourceOperationPostgres$",
"-test.count=1"
],
"workspace": "/tmp/custodian-forgejo-postgres-tests-r1-control-lock",
"source_pins": {
"access_token.go": "sha256:c3131e03c24356fb09fdd600efd17d8054063534355a4c5a3b769f840a58c8ac",
"access_token_scope.go": "sha256:36173156237cc3c3231da78fc9c7e503391ea29c29496721bf4f6b197ab128d3",
"access_token_scope_test.go": "sha256:738bff8f60339a3b4cbd21c31f52812eacde1435fcf55ea657c2a950c262de7d",
"access_token_test.go": "sha256:0121b13b075e6dadb5f6bf5899ceb815786d386cd75214566545b1a3cbe5e721",
"auth_token.go": "sha256:e652217daeffab3c9918efaab56ba4a0a0e8024071840cd8bb85925fe2568bd9",
"main_test.go": "sha256:1c78be2861df2215936939b085bc2bac431f607731fe68da85cfc9c95a4eac87",
"oauth2.go": "sha256:626c075138a8e1dd22d4814b11c6d6acd04e8aae2443e47017de9a289b8f55ac",
"oauth2_list.go": "sha256:2665b0833370d4cb9d0a30e43bd86625f4f707e26a8e5bef53559816aafb7e91",
"oauth2_test.go": "sha256:66e671311715001e2c8119daa944667b9744b4a701732007c6f4510d1daf40ca",
"session.go": "sha256:25d934eb96d2b540a51b7337650b58123ad4ee7e1c61547e7efc1c36eb12c26d",
"session_test.go": "sha256:cae8e667a88143cf7ce3238e8adc9e87fd7f0bdf1b2c0d9b1736c2de38485659",
"source.go": "sha256:33ec2f66652bcb442cd80c36db0a2ad7305e1ee9c9c610d054720eea8ab18e4c",
"source_operation.go": "sha256:137bcc05baf724abfcb9c48a2ef45d5064a6a163c4ba98269364eafb9a1096cd",
"source_operation_internal_test.go": "sha256:af0f424d3a1fd2b29793b64baa1fa07284fee7ea0b7721c503db4efac0d871cb",
"source_operation_postgres_export_test.go": "sha256:b9d1553144766b15c408295b87506106935abf4ed61460598b58dc81825e808d",
"source_operation_postgres_test.go": "sha256:4a37504e5af00580d114ef1bed5cb32e09e4ec2de5fd3192adef043a4ea5f7fe",
"source_operation_process_test.go": "sha256:40d33b11a01cb659f0bf6f8b545c4d79910e8c082a789060bcbc9cadeee965bd",
"source_operation_test.go": "sha256:77d311bca42f48faf3fbdc15c53582e3d8a6d9108a72ed7bb6172e5b88951428",
"source_test.go": "sha256:1ad3f9b198155193fd8193f50084889cc949192abf64c060a5ce3043f2ccb212",
"two_factor.go": "sha256:d3a6e0b348b225d0fc012fdd5a6275736a1b324ec4cd1c013ae80a12531e0b8e",
"two_factor_test.go": "sha256:6a88cb12d204a3b3de49d584d589b1c5a97bfb795160ae93b87707f64bece4fe",
"twofactor.go": "sha256:905e1679be552346758b34c8ee7c950628d965d8bd3946b9b63c6797f41625d6",
"webauthn.go": "sha256:0f9adac61a225854d579ed71338303a30a5abf26e4c115a0afefaa4fd199200e",
"webauthn_test.go": "sha256:03f3487f7c05566e71399ff548a95400a66ed7afc96bbf31365aa7abb79dfa69"
},
"database_source_pins": {
"collation.go": "sha256:9922312734c5cc2a5474b322b88214586916b320969172708f48c7b6eca40e7d",
"common.go": "sha256:f0c626ebedaedb8681a4f3a3531441c49f3e0d305b20730aa47b267b6e16b3fd",
"consistency.go": "sha256:c771f62de8511bfc307583a4585190aba8b38ca2ac76eab200bc901aa15b7bad",
"context.go": "sha256:d4c4acfcb8987071aecf5cd957b3821c8d2619a2696398d37c2970f2527686f7",
"context_committer_test.go": "sha256:83cf7fbfc32aff358221abadee63e96a803a4136c9851cf696c543dc5176d777",
"context_test.go": "sha256:677f6be23f1c855a154de6078a540b60e17c737becfae6115e55ff6d81c3a937",
"convert.go": "sha256:48e62893b598b767dccbf414c0acffbc26c6cfb6cb22ba79eb5b66dbb6c8193a",
"engine.go": "sha256:d21a5b0b9ca37ac48222b79007467a232abc38edda99b3c5f54f1f4c5ab795e8",
"engine_test.go": "sha256:ec78585da5d8b33deb0b55ba3ffd9d8ff4df704ffd62c2d95c2a6ffddd5bc309",
"error.go": "sha256:ca0ead3529d977f90930974200a0a751366629590dae516cb54245d9c75bb280",
"index.go": "sha256:fdfdaf6da41f317d51665bfc03684074aadf5fb32607d80c15ee9b33fdc89f09",
"index_test.go": "sha256:d46ea9d96fc9b51e477ebecb5cfa0e15fc8e13a00c5c84ce620dd23e73663558",
"iterate.go": "sha256:0512e2f2a3785daec26f434f6b55c37e8cd590c1b49d2068f42160c424757e28",
"iterate_test.go": "sha256:8b9eb9d391bd99bddf6b3da5744bd80088eb4d8446c7f51dd3299abe1b8a5ebe",
"list.go": "sha256:e23e7056f9dbce52d85ca922fa4eadb834a6ee3a5dbcafe82485038332b798e0",
"list_test.go": "sha256:5bc42a869931470daf503b51bd3dbf5cb092d37d8cc4e03f80a21f564beadf6a",
"log.go": "sha256:6f080111c46868e337d4d6dd16c56a5743c13b86b412df219701030cd1718a01",
"main_test.go": "sha256:d9eb5ba4ab294ebb2c865969479d6d73db21669f24cc5454ac42f6dbd8825ef3",
"name.go": "sha256:e486e89a36103f56af54f5f39a9b166ac0b08800abaccc2857ab324777dda6b5",
"search.go": "sha256:b488e9a93f95d28450929896ce648e67f6772e1cd8662f7a0a1a8988a24dbfa2",
"sensitive_sql.go": "sha256:06a298d0d6e628e6920384d4ddeef449e40c090841ebaa3f6d175725a45ae584",
"sensitive_sql_logging_test.go": "sha256:d924b35d30686473caf29601cf51cc363ba68158cb4ef0981c9e2fc7b03c04b7",
"sensitive_sql_test.go": "sha256:de6353c955047c3311747e4777b9f9b2195e9efb19160b971dd758dfc94cf31b",
"sequence.go": "sha256:c0e4c7fbaa93961d9711143cfcf4bbb32f197985d21b77424946fbe3a39b38eb",
"sql_postgres_with_schema.go": "sha256:e5941e859ada7831b400fd3143e58f91b1058cb32779d6a4466af01617cf6e7a",
"tracing_context_test.go": "sha256:612b60c67a2be7e2da9173b95d5ef5abd7b9e1e377360828e39a622610bba070"
},
"original_composite_patch": "sha256:15cb7f13b1b1d1095cc344176ca337f705333a436a70ae803fcfd3d7f802ccf4",
"runtime": "custodian-forgejo-pg-96ce905f445a",
"image_id": "sha256:57c72fd2a128e416c7fcc499958864df5301e940bca0a56f58fddf30ffc07777",
"controlled_mutation": {
"mutation": "omit-postgres-lock",
"original_source_sha256": "sha256:ef1b07ef6cf454015d00cde8588835f5118d829da91eb0303d37184859345a31",
"controlled_source_sha256": "sha256:137bcc05baf724abfcb9c48a2ef45d5064a6a163c4ba98269364eafb9a1096cd",
"production_source_changed": false
},
"network": "disabled; only the exact disposable database Unix socket is bound",
"production_database": false,
"actual_authenticated_operation": false,
"real_credentials": false,
"test_binary_sha256": "sha256:82043a82a461a942ff747c59238a3113b5d06de06a2d927c7946df3b22d89498"
}

View file

@ -0,0 +1,190 @@
{"Time":"2026-10-18T01:05:38.768696462Z","Action":"start","Package":"forgejo.org/models/auth"}
{"Time":"2026-10-18T01:05:38.92626254Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:05:38 ...s/storage/storage.go:157:initAttachments() [I] Initialising Attachment storage with type: local\n"}
{"Time":"2026-10-18T01:05:38.92639155Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:05:38 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata2350079914/attachments\n"}
{"Time":"2026-10-18T01:05:38.926402912Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:05:38 ...s/storage/storage.go:147:initAvatars() [I] Initialising Avatar storage with type: local\n"}
{"Time":"2026-10-18T01:05:38.926418683Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:05:38 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata2350079914/avatars\n"}
{"Time":"2026-10-18T01:05:38.926427466Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:05:38 ...s/storage/storage.go:173:initRepoAvatars() [I] Initialising Repository Avatar storage with type: local\n"}
{"Time":"2026-10-18T01:05:38.926435888Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:05:38 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata2350079914/repo-avatars\n"}
{"Time":"2026-10-18T01:05:38.926444121Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:05:38 ...s/storage/storage.go:179:initRepoArchives() [I] Initialising Repository Archive storage with type: local\n"}
{"Time":"2026-10-18T01:05:38.92645202Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:05:38 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata2350079914/repo-archive\n"}
{"Time":"2026-10-18T01:05:38.926459856Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:05:38 ...s/storage/storage.go:189:initPackages() [I] Initialising Packages storage with type: local\n"}
{"Time":"2026-10-18T01:05:38.926467503Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:05:38 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata2350079914/packages\n"}
{"Time":"2026-10-18T01:05:38.926475248Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:05:38 ...s/storage/storage.go:200:initActions() [I] Initialising Actions storage with type: local\n"}
{"Time":"2026-10-18T01:05:38.926482949Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:05:38 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata2350079914/actions_log\n"}
{"Time":"2026-10-18T01:05:38.926490713Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:05:38 ...s/storage/storage.go:204:initActions() [I] Initialising ActionsArtifacts storage with type: local\n"}
{"Time":"2026-10-18T01:05:38.926498477Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:05:38 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /pg-work/data/actions_artifacts\n"}
{"Time":"2026-10-18T01:05:39.027752314Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres"}
{"Time":"2026-10-18T01:05:39.027797319Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres","Output":"=== RUN TestSourceOperationPostgres\n"}
{"Time":"2026-10-18T01:05:39.027806787Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default"}
{"Time":"2026-10-18T01:05:39.027810971Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default","Output":"=== RUN TestSourceOperationPostgres/default\n"}
{"Time":"2026-10-18T01:05:40.920709928Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/create-reconcile-inverse"}
{"Time":"2026-10-18T01:05:40.920794122Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/create-reconcile-inverse","Output":"=== RUN TestSourceOperationPostgres/default/create-reconcile-inverse\n"}
{"Time":"2026-10-18T01:05:41.049140406Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/exact-raw-preexisting-restoration"}
{"Time":"2026-10-18T01:05:41.049189153Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/exact-raw-preexisting-restoration","Output":"=== RUN TestSourceOperationPostgres/default/exact-raw-preexisting-restoration\n"}
{"Time":"2026-10-18T01:05:41.151528256Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/unchanged-preexisting-survives"}
{"Time":"2026-10-18T01:05:41.151568482Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/unchanged-preexisting-survives","Output":"=== RUN TestSourceOperationPostgres/default/unchanged-preexisting-survives\n"}
{"Time":"2026-10-18T01:05:41.250733822Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/private-drift-before-apply"}
{"Time":"2026-10-18T01:05:41.250772019Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/private-drift-before-apply","Output":"=== RUN TestSourceOperationPostgres/default/private-drift-before-apply\n"}
{"Time":"2026-10-18T01:05:41.339755451Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/private-drift-before-inverse"}
{"Time":"2026-10-18T01:05:41.339807697Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/private-drift-before-inverse","Output":"=== RUN TestSourceOperationPostgres/default/private-drift-before-inverse\n"}
{"Time":"2026-10-18T01:05:41.434209119Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/linked-user-refuses-deletion"}
{"Time":"2026-10-18T01:05:41.434247072Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/linked-user-refuses-deletion","Output":"=== RUN TestSourceOperationPostgres/default/linked-user-refuses-deletion\n"}
{"Time":"2026-10-18T01:05:41.537815334Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/linked-external-refuses-deletion"}
{"Time":"2026-10-18T01:05:41.537857868Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/linked-external-refuses-deletion","Output":"=== RUN TestSourceOperationPostgres/default/linked-external-refuses-deletion\n"}
{"Time":"2026-10-18T01:05:41.63902828Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/unexpected-trigger-post-state-rolls-back"}
{"Time":"2026-10-18T01:05:41.639110337Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/unexpected-trigger-post-state-rolls-back","Output":"=== RUN TestSourceOperationPostgres/default/unexpected-trigger-post-state-rolls-back\n"}
{"Time":"2026-10-18T01:05:41.732981278Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/driver-error-rollback-and-private-diagnostics"}
{"Time":"2026-10-18T01:05:41.733017175Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/driver-error-rollback-and-private-diagnostics","Output":"=== RUN TestSourceOperationPostgres/default/driver-error-rollback-and-private-diagnostics\n"}
{"Time":"2026-10-18T01:05:41.836224169Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/uncooperative-writers-excluded"}
{"Time":"2026-10-18T01:05:41.83626536Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/uncooperative-writers-excluded","Output":"=== RUN TestSourceOperationPostgres/default/uncooperative-writers-excluded\n"}
{"Time":"2026-10-18T01:05:41.917406289Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/uncooperative-writers-excluded","Output":" source_operation_postgres_test.go:282: \n"}
{"Time":"2026-10-18T01:05:41.917442547Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/uncooperative-writers-excluded","Output":" \tError Trace:\t/work/source/models/auth/source_operation_postgres_test.go:282\n"}
{"Time":"2026-10-18T01:05:41.917447182Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/uncooperative-writers-excluded","Output":" \t \t\t\t\t/work/source/models/auth/source_operation_postgres_test.go:106\n"}
{"Time":"2026-10-18T01:05:41.917450816Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/uncooperative-writers-excluded","Output":" \tError: \tShould be true\n"}
{"Time":"2026-10-18T01:05:41.917454459Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/uncooperative-writers-excluded","Output":" \tTest: \tTestSourceOperationPostgres/default/uncooperative-writers-excluded\n"}
{"Time":"2026-10-18T01:05:41.917457931Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/uncooperative-writers-excluded","Output":" \tMessages: \tan uncooperative writer escaped the actual table lock\n"}
{"Time":"2026-10-18T01:05:41.917465126Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/concurrent-preparation-has-one-owner"}
{"Time":"2026-10-18T01:05:41.917468246Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/concurrent-preparation-has-one-owner","Output":"=== RUN TestSourceOperationPostgres/default/concurrent-preparation-has-one-owner\n"}
{"Time":"2026-10-18T01:05:42.022036233Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/concurrent-preparation-has-one-owner","Output":" source_operation_postgres_test.go:321: \n"}
{"Time":"2026-10-18T01:05:42.022084872Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/concurrent-preparation-has-one-owner","Output":" \tError Trace:\t/work/source/models/auth/source_operation_postgres_test.go:321\n"}
{"Time":"2026-10-18T01:05:42.02209067Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/concurrent-preparation-has-one-owner","Output":" \t \t\t\t\t/work/source/models/auth/source_operation_postgres_test.go:106\n"}
{"Time":"2026-10-18T01:05:42.022095612Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/concurrent-preparation-has-one-owner","Output":" \tError: \tNot equal: \n"}
{"Time":"2026-10-18T01:05:42.022100102Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/concurrent-preparation-has-one-owner","Output":" \t \texpected: 1\n"}
{"Time":"2026-10-18T01:05:42.022104521Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/concurrent-preparation-has-one-owner","Output":" \t \tactual : 2\n"}
{"Time":"2026-10-18T01:05:42.022109652Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/concurrent-preparation-has-one-owner","Output":" \tTest: \tTestSourceOperationPostgres/default/concurrent-preparation-has-one-owner\n"}
{"Time":"2026-10-18T01:05:42.022464426Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public"}
{"Time":"2026-10-18T01:05:42.02250623Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public","Output":"=== RUN TestSourceOperationPostgres/public\n"}
{"Time":"2026-10-18T01:05:44.045926419Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/create-reconcile-inverse"}
{"Time":"2026-10-18T01:05:44.045972876Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/create-reconcile-inverse","Output":"=== RUN TestSourceOperationPostgres/public/create-reconcile-inverse\n"}
{"Time":"2026-10-18T01:05:44.169852241Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/exact-raw-preexisting-restoration"}
{"Time":"2026-10-18T01:05:44.16990684Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/exact-raw-preexisting-restoration","Output":"=== RUN TestSourceOperationPostgres/public/exact-raw-preexisting-restoration\n"}
{"Time":"2026-10-18T01:05:44.271511536Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/unchanged-preexisting-survives"}
{"Time":"2026-10-18T01:05:44.271570797Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/unchanged-preexisting-survives","Output":"=== RUN TestSourceOperationPostgres/public/unchanged-preexisting-survives\n"}
{"Time":"2026-10-18T01:05:44.37120008Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/private-drift-before-apply"}
{"Time":"2026-10-18T01:05:44.37124458Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/private-drift-before-apply","Output":"=== RUN TestSourceOperationPostgres/public/private-drift-before-apply\n"}
{"Time":"2026-10-18T01:05:44.474344957Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/private-drift-before-inverse"}
{"Time":"2026-10-18T01:05:44.474396031Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/private-drift-before-inverse","Output":"=== RUN TestSourceOperationPostgres/public/private-drift-before-inverse\n"}
{"Time":"2026-10-18T01:05:44.585397268Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/linked-user-refuses-deletion"}
{"Time":"2026-10-18T01:05:44.585453536Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/linked-user-refuses-deletion","Output":"=== RUN TestSourceOperationPostgres/public/linked-user-refuses-deletion\n"}
{"Time":"2026-10-18T01:05:44.711724758Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/linked-external-refuses-deletion"}
{"Time":"2026-10-18T01:05:44.711821964Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/linked-external-refuses-deletion","Output":"=== RUN TestSourceOperationPostgres/public/linked-external-refuses-deletion\n"}
{"Time":"2026-10-18T01:05:44.832624834Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/unexpected-trigger-post-state-rolls-back"}
{"Time":"2026-10-18T01:05:44.832682184Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/unexpected-trigger-post-state-rolls-back","Output":"=== RUN TestSourceOperationPostgres/public/unexpected-trigger-post-state-rolls-back\n"}
{"Time":"2026-10-18T01:05:44.949311021Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/driver-error-rollback-and-private-diagnostics"}
{"Time":"2026-10-18T01:05:44.949368633Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/driver-error-rollback-and-private-diagnostics","Output":"=== RUN TestSourceOperationPostgres/public/driver-error-rollback-and-private-diagnostics\n"}
{"Time":"2026-10-18T01:05:45.069008803Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/uncooperative-writers-excluded"}
{"Time":"2026-10-18T01:05:45.069125558Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/uncooperative-writers-excluded","Output":"=== RUN TestSourceOperationPostgres/public/uncooperative-writers-excluded\n"}
{"Time":"2026-10-18T01:05:45.16846189Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/uncooperative-writers-excluded","Output":" source_operation_postgres_test.go:282: \n"}
{"Time":"2026-10-18T01:05:45.168519799Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/uncooperative-writers-excluded","Output":" \tError Trace:\t/work/source/models/auth/source_operation_postgres_test.go:282\n"}
{"Time":"2026-10-18T01:05:45.168531494Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/uncooperative-writers-excluded","Output":" \t \t\t\t\t/work/source/models/auth/source_operation_postgres_test.go:106\n"}
{"Time":"2026-10-18T01:05:45.168538293Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/uncooperative-writers-excluded","Output":" \tError: \tShould be true\n"}
{"Time":"2026-10-18T01:05:45.168554867Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/uncooperative-writers-excluded","Output":" \tTest: \tTestSourceOperationPostgres/public/uncooperative-writers-excluded\n"}
{"Time":"2026-10-18T01:05:45.168562685Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/uncooperative-writers-excluded","Output":" \tMessages: \tan uncooperative writer escaped the actual table lock\n"}
{"Time":"2026-10-18T01:05:45.1685708Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/concurrent-preparation-has-one-owner"}
{"Time":"2026-10-18T01:05:45.168575543Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/concurrent-preparation-has-one-owner","Output":"=== RUN TestSourceOperationPostgres/public/concurrent-preparation-has-one-owner\n"}
{"Time":"2026-10-18T01:05:45.280524395Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named"}
{"Time":"2026-10-18T01:05:45.2805772Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named","Output":"=== RUN TestSourceOperationPostgres/named\n"}
{"Time":"2026-10-18T01:05:47.282273653Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/create-reconcile-inverse"}
{"Time":"2026-10-18T01:05:47.282315772Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/create-reconcile-inverse","Output":"=== RUN TestSourceOperationPostgres/named/create-reconcile-inverse\n"}
{"Time":"2026-10-18T01:05:47.395342924Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/exact-raw-preexisting-restoration"}
{"Time":"2026-10-18T01:05:47.395458814Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/exact-raw-preexisting-restoration","Output":"=== RUN TestSourceOperationPostgres/named/exact-raw-preexisting-restoration\n"}
{"Time":"2026-10-18T01:05:47.490998158Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/unchanged-preexisting-survives"}
{"Time":"2026-10-18T01:05:47.491045517Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/unchanged-preexisting-survives","Output":"=== RUN TestSourceOperationPostgres/named/unchanged-preexisting-survives\n"}
{"Time":"2026-10-18T01:05:47.588881435Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/private-drift-before-apply"}
{"Time":"2026-10-18T01:05:47.588938217Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/private-drift-before-apply","Output":"=== RUN TestSourceOperationPostgres/named/private-drift-before-apply\n"}
{"Time":"2026-10-18T01:05:47.682010877Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/private-drift-before-inverse"}
{"Time":"2026-10-18T01:05:47.682066117Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/private-drift-before-inverse","Output":"=== RUN TestSourceOperationPostgres/named/private-drift-before-inverse\n"}
{"Time":"2026-10-18T01:05:47.780868465Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/linked-user-refuses-deletion"}
{"Time":"2026-10-18T01:05:47.780921081Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/linked-user-refuses-deletion","Output":"=== RUN TestSourceOperationPostgres/named/linked-user-refuses-deletion\n"}
{"Time":"2026-10-18T01:05:47.881999712Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/linked-external-refuses-deletion"}
{"Time":"2026-10-18T01:05:47.882045935Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/linked-external-refuses-deletion","Output":"=== RUN TestSourceOperationPostgres/named/linked-external-refuses-deletion\n"}
{"Time":"2026-10-18T01:05:47.97937744Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/unexpected-trigger-post-state-rolls-back"}
{"Time":"2026-10-18T01:05:47.97942148Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/unexpected-trigger-post-state-rolls-back","Output":"=== RUN TestSourceOperationPostgres/named/unexpected-trigger-post-state-rolls-back\n"}
{"Time":"2026-10-18T01:05:48.07641057Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/driver-error-rollback-and-private-diagnostics"}
{"Time":"2026-10-18T01:05:48.076448199Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/driver-error-rollback-and-private-diagnostics","Output":"=== RUN TestSourceOperationPostgres/named/driver-error-rollback-and-private-diagnostics\n"}
{"Time":"2026-10-18T01:05:48.178631251Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/uncooperative-writers-excluded"}
{"Time":"2026-10-18T01:05:48.1787176Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/uncooperative-writers-excluded","Output":"=== RUN TestSourceOperationPostgres/named/uncooperative-writers-excluded\n"}
{"Time":"2026-10-18T01:05:48.2645986Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/uncooperative-writers-excluded","Output":" source_operation_postgres_test.go:282: \n"}
{"Time":"2026-10-18T01:05:48.264650927Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/uncooperative-writers-excluded","Output":" \tError Trace:\t/work/source/models/auth/source_operation_postgres_test.go:282\n"}
{"Time":"2026-10-18T01:05:48.264663245Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/uncooperative-writers-excluded","Output":" \t \t\t\t\t/work/source/models/auth/source_operation_postgres_test.go:106\n"}
{"Time":"2026-10-18T01:05:48.264670044Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/uncooperative-writers-excluded","Output":" \tError: \tShould be true\n"}
{"Time":"2026-10-18T01:05:48.26467466Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/uncooperative-writers-excluded","Output":" \tTest: \tTestSourceOperationPostgres/named/uncooperative-writers-excluded\n"}
{"Time":"2026-10-18T01:05:48.264698051Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/uncooperative-writers-excluded","Output":" \tMessages: \tan uncooperative writer escaped the actual table lock\n"}
{"Time":"2026-10-18T01:05:48.264711018Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/concurrent-preparation-has-one-owner"}
{"Time":"2026-10-18T01:05:48.264714499Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/concurrent-preparation-has-one-owner","Output":"=== RUN TestSourceOperationPostgres/named/concurrent-preparation-has-one-owner\n"}
{"Time":"2026-10-18T01:05:48.368321174Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres","Output":"--- FAIL: TestSourceOperationPostgres (9.34s)\n"}
{"Time":"2026-10-18T01:05:48.368377261Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default","Output":" --- FAIL: TestSourceOperationPostgres/default (2.99s)\n"}
{"Time":"2026-10-18T01:05:48.368390012Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/create-reconcile-inverse","Output":" --- PASS: TestSourceOperationPostgres/default/create-reconcile-inverse (0.13s)\n"}
{"Time":"2026-10-18T01:05:48.368399372Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/create-reconcile-inverse","Elapsed":0.13}
{"Time":"2026-10-18T01:05:48.368493322Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/exact-raw-preexisting-restoration","Output":" --- PASS: TestSourceOperationPostgres/default/exact-raw-preexisting-restoration (0.10s)\n"}
{"Time":"2026-10-18T01:05:48.368507696Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/exact-raw-preexisting-restoration","Elapsed":0.1}
{"Time":"2026-10-18T01:05:48.368516019Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/unchanged-preexisting-survives","Output":" --- PASS: TestSourceOperationPostgres/default/unchanged-preexisting-survives (0.10s)\n"}
{"Time":"2026-10-18T01:05:48.368524549Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/unchanged-preexisting-survives","Elapsed":0.1}
{"Time":"2026-10-18T01:05:48.368531384Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/private-drift-before-apply","Output":" --- PASS: TestSourceOperationPostgres/default/private-drift-before-apply (0.09s)\n"}
{"Time":"2026-10-18T01:05:48.368539752Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/private-drift-before-apply","Elapsed":0.09}
{"Time":"2026-10-18T01:05:48.368546786Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/private-drift-before-inverse","Output":" --- PASS: TestSourceOperationPostgres/default/private-drift-before-inverse (0.09s)\n"}
{"Time":"2026-10-18T01:05:48.368554982Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/private-drift-before-inverse","Elapsed":0.09}
{"Time":"2026-10-18T01:05:48.368561971Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/linked-user-refuses-deletion","Output":" --- PASS: TestSourceOperationPostgres/default/linked-user-refuses-deletion (0.10s)\n"}
{"Time":"2026-10-18T01:05:48.368569762Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/linked-user-refuses-deletion","Elapsed":0.1}
{"Time":"2026-10-18T01:05:48.368576344Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/linked-external-refuses-deletion","Output":" --- PASS: TestSourceOperationPostgres/default/linked-external-refuses-deletion (0.10s)\n"}
{"Time":"2026-10-18T01:05:48.368600429Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/linked-external-refuses-deletion","Elapsed":0.1}
{"Time":"2026-10-18T01:05:48.368609113Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/unexpected-trigger-post-state-rolls-back","Output":" --- PASS: TestSourceOperationPostgres/default/unexpected-trigger-post-state-rolls-back (0.09s)\n"}
{"Time":"2026-10-18T01:05:48.368617201Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/unexpected-trigger-post-state-rolls-back","Elapsed":0.09}
{"Time":"2026-10-18T01:05:48.368624199Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/driver-error-rollback-and-private-diagnostics","Output":" --- PASS: TestSourceOperationPostgres/default/driver-error-rollback-and-private-diagnostics (0.10s)\n"}
{"Time":"2026-10-18T01:05:48.368631674Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/driver-error-rollback-and-private-diagnostics","Elapsed":0.1}
{"Time":"2026-10-18T01:05:48.36863869Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/uncooperative-writers-excluded","Output":" --- FAIL: TestSourceOperationPostgres/default/uncooperative-writers-excluded (0.08s)\n"}
{"Time":"2026-10-18T01:05:48.3686541Z","Action":"fail","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/uncooperative-writers-excluded","Elapsed":0.08}
{"Time":"2026-10-18T01:05:48.368661467Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/concurrent-preparation-has-one-owner","Output":" --- FAIL: TestSourceOperationPostgres/default/concurrent-preparation-has-one-owner (0.10s)\n"}
{"Time":"2026-10-18T01:05:48.3686697Z","Action":"fail","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/concurrent-preparation-has-one-owner","Elapsed":0.1}
{"Time":"2026-10-18T01:05:48.368675597Z","Action":"fail","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default","Elapsed":2.99}
{"Time":"2026-10-18T01:05:48.368682775Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public","Output":" --- FAIL: TestSourceOperationPostgres/public (3.26s)\n"}
{"Time":"2026-10-18T01:05:48.368690764Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/create-reconcile-inverse","Output":" --- PASS: TestSourceOperationPostgres/public/create-reconcile-inverse (0.12s)\n"}
{"Time":"2026-10-18T01:05:48.368698519Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/create-reconcile-inverse","Elapsed":0.12}
{"Time":"2026-10-18T01:05:48.368705065Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/exact-raw-preexisting-restoration","Output":" --- PASS: TestSourceOperationPostgres/public/exact-raw-preexisting-restoration (0.10s)\n"}
{"Time":"2026-10-18T01:05:48.368712766Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/exact-raw-preexisting-restoration","Elapsed":0.1}
{"Time":"2026-10-18T01:05:48.368719782Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/unchanged-preexisting-survives","Output":" --- PASS: TestSourceOperationPostgres/public/unchanged-preexisting-survives (0.10s)\n"}
{"Time":"2026-10-18T01:05:48.368727627Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/unchanged-preexisting-survives","Elapsed":0.1}
{"Time":"2026-10-18T01:05:48.368734462Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/private-drift-before-apply","Output":" --- PASS: TestSourceOperationPostgres/public/private-drift-before-apply (0.10s)\n"}
{"Time":"2026-10-18T01:05:48.36875081Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/private-drift-before-apply","Elapsed":0.1}
{"Time":"2026-10-18T01:05:48.368759124Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/private-drift-before-inverse","Output":" --- PASS: TestSourceOperationPostgres/public/private-drift-before-inverse (0.11s)\n"}
{"Time":"2026-10-18T01:05:48.368767095Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/private-drift-before-inverse","Elapsed":0.11}
{"Time":"2026-10-18T01:05:48.368778845Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/linked-user-refuses-deletion","Output":" --- PASS: TestSourceOperationPostgres/public/linked-user-refuses-deletion (0.13s)\n"}
{"Time":"2026-10-18T01:05:48.368786572Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/linked-user-refuses-deletion","Elapsed":0.13}
{"Time":"2026-10-18T01:05:48.368793651Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/linked-external-refuses-deletion","Output":" --- PASS: TestSourceOperationPostgres/public/linked-external-refuses-deletion (0.12s)\n"}
{"Time":"2026-10-18T01:05:48.368801541Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/linked-external-refuses-deletion","Elapsed":0.12}
{"Time":"2026-10-18T01:05:48.368807943Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/unexpected-trigger-post-state-rolls-back","Output":" --- PASS: TestSourceOperationPostgres/public/unexpected-trigger-post-state-rolls-back (0.12s)\n"}
{"Time":"2026-10-18T01:05:48.368868278Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/unexpected-trigger-post-state-rolls-back","Elapsed":0.12}
{"Time":"2026-10-18T01:05:48.368877412Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/driver-error-rollback-and-private-diagnostics","Output":" --- PASS: TestSourceOperationPostgres/public/driver-error-rollback-and-private-diagnostics (0.12s)\n"}
{"Time":"2026-10-18T01:05:48.368885924Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/driver-error-rollback-and-private-diagnostics","Elapsed":0.12}
{"Time":"2026-10-18T01:05:48.368892814Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/uncooperative-writers-excluded","Output":" --- FAIL: TestSourceOperationPostgres/public/uncooperative-writers-excluded (0.10s)\n"}
{"Time":"2026-10-18T01:05:48.368900451Z","Action":"fail","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/uncooperative-writers-excluded","Elapsed":0.1}
{"Time":"2026-10-18T01:05:48.368908026Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/concurrent-preparation-has-one-owner","Output":" --- PASS: TestSourceOperationPostgres/public/concurrent-preparation-has-one-owner (0.11s)\n"}
{"Time":"2026-10-18T01:05:48.368916691Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/concurrent-preparation-has-one-owner","Elapsed":0.11}
{"Time":"2026-10-18T01:05:48.368923003Z","Action":"fail","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public","Elapsed":3.26}
{"Time":"2026-10-18T01:05:48.368929586Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named","Output":" --- FAIL: TestSourceOperationPostgres/named (3.09s)\n"}
{"Time":"2026-10-18T01:05:48.368938053Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/create-reconcile-inverse","Output":" --- PASS: TestSourceOperationPostgres/named/create-reconcile-inverse (0.11s)\n"}
{"Time":"2026-10-18T01:05:48.368957332Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/create-reconcile-inverse","Elapsed":0.11}
{"Time":"2026-10-18T01:05:48.368965953Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/exact-raw-preexisting-restoration","Output":" --- PASS: TestSourceOperationPostgres/named/exact-raw-preexisting-restoration (0.10s)\n"}
{"Time":"2026-10-18T01:05:48.368973779Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/exact-raw-preexisting-restoration","Elapsed":0.1}
{"Time":"2026-10-18T01:05:48.368980597Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/unchanged-preexisting-survives","Output":" --- PASS: TestSourceOperationPostgres/named/unchanged-preexisting-survives (0.10s)\n"}
{"Time":"2026-10-18T01:05:48.368988414Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/unchanged-preexisting-survives","Elapsed":0.1}
{"Time":"2026-10-18T01:05:48.368995195Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/private-drift-before-apply","Output":" --- PASS: TestSourceOperationPostgres/named/private-drift-before-apply (0.09s)\n"}
{"Time":"2026-10-18T01:05:48.369002662Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/private-drift-before-apply","Elapsed":0.09}
{"Time":"2026-10-18T01:05:48.369009145Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/private-drift-before-inverse","Output":" --- PASS: TestSourceOperationPostgres/named/private-drift-before-inverse (0.10s)\n"}
{"Time":"2026-10-18T01:05:48.369026458Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/private-drift-before-inverse","Elapsed":0.1}
{"Time":"2026-10-18T01:05:48.369034159Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/linked-user-refuses-deletion","Output":" --- PASS: TestSourceOperationPostgres/named/linked-user-refuses-deletion (0.10s)\n"}
{"Time":"2026-10-18T01:05:48.369042275Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/linked-user-refuses-deletion","Elapsed":0.1}
{"Time":"2026-10-18T01:05:48.369049335Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/linked-external-refuses-deletion","Output":" --- PASS: TestSourceOperationPostgres/named/linked-external-refuses-deletion (0.10s)\n"}
{"Time":"2026-10-18T01:05:48.369057063Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/linked-external-refuses-deletion","Elapsed":0.1}
{"Time":"2026-10-18T01:05:48.369063817Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/unexpected-trigger-post-state-rolls-back","Output":" --- PASS: TestSourceOperationPostgres/named/unexpected-trigger-post-state-rolls-back (0.10s)\n"}
{"Time":"2026-10-18T01:05:48.369070958Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/unexpected-trigger-post-state-rolls-back","Elapsed":0.1}
{"Time":"2026-10-18T01:05:48.369077604Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/driver-error-rollback-and-private-diagnostics","Output":" --- PASS: TestSourceOperationPostgres/named/driver-error-rollback-and-private-diagnostics (0.10s)\n"}
{"Time":"2026-10-18T01:05:48.369086053Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/driver-error-rollback-and-private-diagnostics","Elapsed":0.1}
{"Time":"2026-10-18T01:05:48.369092537Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/uncooperative-writers-excluded","Output":" --- FAIL: TestSourceOperationPostgres/named/uncooperative-writers-excluded (0.09s)\n"}
{"Time":"2026-10-18T01:05:48.369109958Z","Action":"fail","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/uncooperative-writers-excluded","Elapsed":0.09}
{"Time":"2026-10-18T01:05:48.36911783Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/concurrent-preparation-has-one-owner","Output":" --- PASS: TestSourceOperationPostgres/named/concurrent-preparation-has-one-owner (0.10s)\n"}
{"Time":"2026-10-18T01:05:48.369124638Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/concurrent-preparation-has-one-owner","Elapsed":0.1}
{"Time":"2026-10-18T01:05:48.369130905Z","Action":"fail","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named","Elapsed":3.09}
{"Time":"2026-10-18T01:05:48.3691371Z","Action":"fail","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres","Elapsed":9.34}
{"Time":"2026-10-18T01:05:48.369144115Z","Action":"output","Package":"forgejo.org/models/auth","Output":"FAIL\n"}
{"Time":"2026-10-18T01:05:48.397105421Z","Action":"fail","Package":"forgejo.org/models/auth","Elapsed":9.628}

View file

@ -0,0 +1,200 @@
{
"action": "suite",
"returncode": 1,
"expected_returncode": 1,
"outcome_matches": true,
"seconds": 11.35,
"argv": [
"bwrap",
"--unshare-pid",
"--die-with-parent",
"--new-session",
"--unshare-net",
"--ro-bind",
"/usr",
"/usr",
"--ro-bind",
"/lib",
"/lib",
"--ro-bind",
"/lib64",
"/lib64",
"--symlink",
"usr/bin",
"/bin",
"--proc",
"/proc",
"--dev",
"/dev",
"--tmpfs",
"/tmp",
"--bind",
"/tmp/custodian-forgejo-successor-r3",
"/work",
"--ro-bind",
"/home/worsch/go/pkg/mod/cache/download",
"/cached",
"--ro-bind",
"/etc/ssl/certs",
"/etc/ssl/certs",
"--ro-bind",
"/etc/resolv.conf",
"/etc/resolv.conf",
"--chdir",
"/work/source",
"--clearenv",
"--ro-bind",
"/tmp/custodian-forgejo-successor-attempt2/modules",
"/work/modules",
"--bind",
"/tmp/custodian-forgejo-successor-attempt2/gocache",
"/work/gocache",
"--dir",
"/run",
"--ro-bind",
"/tmp/custodian-forgejo-successor-r3/descriptor-fixtures",
"/run/forgejo-oidc",
"--bind",
"/tmp/custodian-forgejo-successor-r3/descriptor-fixtures",
"/run/writable-input",
"--setenv",
"PATH",
"/work/go/bin:/usr/bin:/bin",
"--setenv",
"HOME",
"/work/home",
"--setenv",
"GOPATH",
"/work/gopath",
"--setenv",
"GOTOOLCHAIN",
"local",
"--setenv",
"GOPROXY",
"off",
"--setenv",
"GOSUMDB",
"off",
"--setenv",
"GOVCS",
"*:off",
"--setenv",
"GOMODCACHE",
"/work/modules",
"--setenv",
"GOCACHE",
"/work/gocache",
"--setenv",
"GOMAXPROCS",
"4",
"--setenv",
"CGO_ENABLED",
"1",
"--setenv",
"GIT_CONFIG_NOSYSTEM",
"1",
"--setenv",
"GIT_CONFIG_GLOBAL",
"/work/home/test.gitconfig",
"--setenv",
"GIT_TERMINAL_PROMPT",
"0",
"--ro-bind",
"/tmp/custodian-forgejo-postgres-tests-r1-control-private/auth",
"/work/source/models/auth",
"--bind",
"/tmp/custodian-forgejo-postgres-tests-r1-control-private",
"/pg-work",
"--dir",
"/run",
"--ro-bind",
"/tmp/custodian-forgejo-postgres-r1-attempt3/socket",
"/run/source-operation-postgres",
"--setenv",
"CUSTODIAN_PG_SOCKET",
"/run/source-operation-postgres",
"--ro-bind",
"/tmp/custodian-forgejo-postgres-tests-r1-control-private/db",
"/work/source/models/db",
"--",
"go",
"tool",
"test2json",
"-t",
"-p",
"forgejo.org/models/auth",
"/pg-work/models-auth.test",
"-test.v",
"-test.run=^TestSourceOperationPostgres$",
"-test.count=1"
],
"workspace": "/tmp/custodian-forgejo-postgres-tests-r1-control-private",
"source_pins": {
"access_token.go": "sha256:c3131e03c24356fb09fdd600efd17d8054063534355a4c5a3b769f840a58c8ac",
"access_token_scope.go": "sha256:36173156237cc3c3231da78fc9c7e503391ea29c29496721bf4f6b197ab128d3",
"access_token_scope_test.go": "sha256:738bff8f60339a3b4cbd21c31f52812eacde1435fcf55ea657c2a950c262de7d",
"access_token_test.go": "sha256:0121b13b075e6dadb5f6bf5899ceb815786d386cd75214566545b1a3cbe5e721",
"auth_token.go": "sha256:e652217daeffab3c9918efaab56ba4a0a0e8024071840cd8bb85925fe2568bd9",
"main_test.go": "sha256:1c78be2861df2215936939b085bc2bac431f607731fe68da85cfc9c95a4eac87",
"oauth2.go": "sha256:626c075138a8e1dd22d4814b11c6d6acd04e8aae2443e47017de9a289b8f55ac",
"oauth2_list.go": "sha256:2665b0833370d4cb9d0a30e43bd86625f4f707e26a8e5bef53559816aafb7e91",
"oauth2_test.go": "sha256:66e671311715001e2c8119daa944667b9744b4a701732007c6f4510d1daf40ca",
"session.go": "sha256:25d934eb96d2b540a51b7337650b58123ad4ee7e1c61547e7efc1c36eb12c26d",
"session_test.go": "sha256:cae8e667a88143cf7ce3238e8adc9e87fd7f0bdf1b2c0d9b1736c2de38485659",
"source.go": "sha256:33ec2f66652bcb442cd80c36db0a2ad7305e1ee9c9c610d054720eea8ab18e4c",
"source_operation.go": "sha256:0b9e248b685a950cfbf31f76aafd54e1b99272402a2f05bc6d8b742bc2657d82",
"source_operation_internal_test.go": "sha256:af0f424d3a1fd2b29793b64baa1fa07284fee7ea0b7721c503db4efac0d871cb",
"source_operation_postgres_export_test.go": "sha256:b9d1553144766b15c408295b87506106935abf4ed61460598b58dc81825e808d",
"source_operation_postgres_test.go": "sha256:4a37504e5af00580d114ef1bed5cb32e09e4ec2de5fd3192adef043a4ea5f7fe",
"source_operation_process_test.go": "sha256:40d33b11a01cb659f0bf6f8b545c4d79910e8c082a789060bcbc9cadeee965bd",
"source_operation_test.go": "sha256:77d311bca42f48faf3fbdc15c53582e3d8a6d9108a72ed7bb6172e5b88951428",
"source_test.go": "sha256:1ad3f9b198155193fd8193f50084889cc949192abf64c060a5ce3043f2ccb212",
"two_factor.go": "sha256:d3a6e0b348b225d0fc012fdd5a6275736a1b324ec4cd1c013ae80a12531e0b8e",
"two_factor_test.go": "sha256:6a88cb12d204a3b3de49d584d589b1c5a97bfb795160ae93b87707f64bece4fe",
"twofactor.go": "sha256:905e1679be552346758b34c8ee7c950628d965d8bd3946b9b63c6797f41625d6",
"webauthn.go": "sha256:0f9adac61a225854d579ed71338303a30a5abf26e4c115a0afefaa4fd199200e",
"webauthn_test.go": "sha256:03f3487f7c05566e71399ff548a95400a66ed7afc96bbf31365aa7abb79dfa69"
},
"database_source_pins": {
"collation.go": "sha256:9922312734c5cc2a5474b322b88214586916b320969172708f48c7b6eca40e7d",
"common.go": "sha256:f0c626ebedaedb8681a4f3a3531441c49f3e0d305b20730aa47b267b6e16b3fd",
"consistency.go": "sha256:c771f62de8511bfc307583a4585190aba8b38ca2ac76eab200bc901aa15b7bad",
"context.go": "sha256:d4c4acfcb8987071aecf5cd957b3821c8d2619a2696398d37c2970f2527686f7",
"context_committer_test.go": "sha256:83cf7fbfc32aff358221abadee63e96a803a4136c9851cf696c543dc5176d777",
"context_test.go": "sha256:677f6be23f1c855a154de6078a540b60e17c737becfae6115e55ff6d81c3a937",
"convert.go": "sha256:48e62893b598b767dccbf414c0acffbc26c6cfb6cb22ba79eb5b66dbb6c8193a",
"engine.go": "sha256:d21a5b0b9ca37ac48222b79007467a232abc38edda99b3c5f54f1f4c5ab795e8",
"engine_test.go": "sha256:ec78585da5d8b33deb0b55ba3ffd9d8ff4df704ffd62c2d95c2a6ffddd5bc309",
"error.go": "sha256:ca0ead3529d977f90930974200a0a751366629590dae516cb54245d9c75bb280",
"index.go": "sha256:fdfdaf6da41f317d51665bfc03684074aadf5fb32607d80c15ee9b33fdc89f09",
"index_test.go": "sha256:d46ea9d96fc9b51e477ebecb5cfa0e15fc8e13a00c5c84ce620dd23e73663558",
"iterate.go": "sha256:0512e2f2a3785daec26f434f6b55c37e8cd590c1b49d2068f42160c424757e28",
"iterate_test.go": "sha256:8b9eb9d391bd99bddf6b3da5744bd80088eb4d8446c7f51dd3299abe1b8a5ebe",
"list.go": "sha256:e23e7056f9dbce52d85ca922fa4eadb834a6ee3a5dbcafe82485038332b798e0",
"list_test.go": "sha256:5bc42a869931470daf503b51bd3dbf5cb092d37d8cc4e03f80a21f564beadf6a",
"log.go": "sha256:6f080111c46868e337d4d6dd16c56a5743c13b86b412df219701030cd1718a01",
"main_test.go": "sha256:d9eb5ba4ab294ebb2c865969479d6d73db21669f24cc5454ac42f6dbd8825ef3",
"name.go": "sha256:e486e89a36103f56af54f5f39a9b166ac0b08800abaccc2857ab324777dda6b5",
"search.go": "sha256:b488e9a93f95d28450929896ce648e67f6772e1cd8662f7a0a1a8988a24dbfa2",
"sensitive_sql.go": "sha256:06a298d0d6e628e6920384d4ddeef449e40c090841ebaa3f6d175725a45ae584",
"sensitive_sql_logging_test.go": "sha256:d924b35d30686473caf29601cf51cc363ba68158cb4ef0981c9e2fc7b03c04b7",
"sensitive_sql_test.go": "sha256:de6353c955047c3311747e4777b9f9b2195e9efb19160b971dd758dfc94cf31b",
"sequence.go": "sha256:c0e4c7fbaa93961d9711143cfcf4bbb32f197985d21b77424946fbe3a39b38eb",
"sql_postgres_with_schema.go": "sha256:e5941e859ada7831b400fd3143e58f91b1058cb32779d6a4466af01617cf6e7a",
"tracing_context_test.go": "sha256:612b60c67a2be7e2da9173b95d5ef5abd7b9e1e377360828e39a622610bba070"
},
"original_composite_patch": "sha256:15cb7f13b1b1d1095cc344176ca337f705333a436a70ae803fcfd3d7f802ccf4",
"runtime": "custodian-forgejo-pg-96ce905f445a",
"image_id": "sha256:57c72fd2a128e416c7fcc499958864df5301e940bca0a56f58fddf30ffc07777",
"controlled_mutation": {
"mutation": "omit-private-context",
"original_source_sha256": "sha256:ef1b07ef6cf454015d00cde8588835f5118d829da91eb0303d37184859345a31",
"controlled_source_sha256": "sha256:0b9e248b685a950cfbf31f76aafd54e1b99272402a2f05bc6d8b742bc2657d82",
"production_source_changed": false
},
"network": "disabled; only the exact disposable database Unix socket is bound",
"production_database": false,
"actual_authenticated_operation": false,
"real_credentials": false,
"test_binary_sha256": "sha256:e5acaf24f87a94f58b1cd9000f04a08186b35f29e6e848835ecd3c7105a9de72"
}

View file

@ -0,0 +1,186 @@
{"Time":"2026-10-18T01:06:37.272075993Z","Action":"start","Package":"forgejo.org/models/auth"}
{"Time":"2026-10-18T01:06:37.413624041Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:06:37 ...s/storage/storage.go:157:initAttachments() [I] Initialising Attachment storage with type: local\n"}
{"Time":"2026-10-18T01:06:37.413704087Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:06:37 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata302694419/attachments\n"}
{"Time":"2026-10-18T01:06:37.413708848Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:06:37 ...s/storage/storage.go:147:initAvatars() [I] Initialising Avatar storage with type: local\n"}
{"Time":"2026-10-18T01:06:37.413715079Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:06:37 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata302694419/avatars\n"}
{"Time":"2026-10-18T01:06:37.413718587Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:06:37 ...s/storage/storage.go:173:initRepoAvatars() [I] Initialising Repository Avatar storage with type: local\n"}
{"Time":"2026-10-18T01:06:37.413721941Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:06:37 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata302694419/repo-avatars\n"}
{"Time":"2026-10-18T01:06:37.413725277Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:06:37 ...s/storage/storage.go:179:initRepoArchives() [I] Initialising Repository Archive storage with type: local\n"}
{"Time":"2026-10-18T01:06:37.413728406Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:06:37 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata302694419/repo-archive\n"}
{"Time":"2026-10-18T01:06:37.413731553Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:06:37 ...s/storage/storage.go:189:initPackages() [I] Initialising Packages storage with type: local\n"}
{"Time":"2026-10-18T01:06:37.413734655Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:06:37 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata302694419/packages\n"}
{"Time":"2026-10-18T01:06:37.41373773Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:06:37 ...s/storage/storage.go:200:initActions() [I] Initialising Actions storage with type: local\n"}
{"Time":"2026-10-18T01:06:37.413740805Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:06:37 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /tmp/appdata302694419/actions_log\n"}
{"Time":"2026-10-18T01:06:37.413743889Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:06:37 ...s/storage/storage.go:204:initActions() [I] Initialising ActionsArtifacts storage with type: local\n"}
{"Time":"2026-10-18T01:06:37.413746937Z","Action":"output","Package":"forgejo.org/models/auth","Output":"2026/10/18 01:06:37 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /pg-work/data/actions_artifacts\n"}
{"Time":"2026-10-18T01:06:37.522368095Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres"}
{"Time":"2026-10-18T01:06:37.522422613Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres","Output":"=== RUN TestSourceOperationPostgres\n"}
{"Time":"2026-10-18T01:06:37.522431603Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default"}
{"Time":"2026-10-18T01:06:37.522436923Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default","Output":"=== RUN TestSourceOperationPostgres/default\n"}
{"Time":"2026-10-18T01:06:39.38351702Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/create-reconcile-inverse"}
{"Time":"2026-10-18T01:06:39.383598221Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/create-reconcile-inverse","Output":"=== RUN TestSourceOperationPostgres/default/create-reconcile-inverse\n"}
{"Time":"2026-10-18T01:06:39.496192274Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/exact-raw-preexisting-restoration"}
{"Time":"2026-10-18T01:06:39.496228243Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/exact-raw-preexisting-restoration","Output":"=== RUN TestSourceOperationPostgres/default/exact-raw-preexisting-restoration\n"}
{"Time":"2026-10-18T01:06:39.596076806Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/unchanged-preexisting-survives"}
{"Time":"2026-10-18T01:06:39.596116148Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/unchanged-preexisting-survives","Output":"=== RUN TestSourceOperationPostgres/default/unchanged-preexisting-survives\n"}
{"Time":"2026-10-18T01:06:39.697806777Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/private-drift-before-apply"}
{"Time":"2026-10-18T01:06:39.697844866Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/private-drift-before-apply","Output":"=== RUN TestSourceOperationPostgres/default/private-drift-before-apply\n"}
{"Time":"2026-10-18T01:06:39.790766219Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/private-drift-before-inverse"}
{"Time":"2026-10-18T01:06:39.790805589Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/private-drift-before-inverse","Output":"=== RUN TestSourceOperationPostgres/default/private-drift-before-inverse\n"}
{"Time":"2026-10-18T01:06:39.887011811Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/linked-user-refuses-deletion"}
{"Time":"2026-10-18T01:06:39.887047754Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/linked-user-refuses-deletion","Output":"=== RUN TestSourceOperationPostgres/default/linked-user-refuses-deletion\n"}
{"Time":"2026-10-18T01:06:39.982500658Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/linked-external-refuses-deletion"}
{"Time":"2026-10-18T01:06:39.982539604Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/linked-external-refuses-deletion","Output":"=== RUN TestSourceOperationPostgres/default/linked-external-refuses-deletion\n"}
{"Time":"2026-10-18T01:06:40.078461333Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/unexpected-trigger-post-state-rolls-back"}
{"Time":"2026-10-18T01:06:40.078501586Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/unexpected-trigger-post-state-rolls-back","Output":"=== RUN TestSourceOperationPostgres/default/unexpected-trigger-post-state-rolls-back\n"}
{"Time":"2026-10-18T01:06:40.173324905Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/driver-error-rollback-and-private-diagnostics"}
{"Time":"2026-10-18T01:06:40.173363417Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/driver-error-rollback-and-private-diagnostics","Output":"=== RUN TestSourceOperationPostgres/default/driver-error-rollback-and-private-diagnostics\n"}
{"Time":"2026-10-18T01:06:40.269530884Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/driver-error-rollback-and-private-diagnostics","Output":" source_operation_postgres_test.go:247: \n"}
{"Time":"2026-10-18T01:06:40.269584158Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/driver-error-rollback-and-private-diagnostics","Output":" \tError Trace:\t/work/source/models/auth/source_operation_postgres_test.go:247\n"}
{"Time":"2026-10-18T01:06:40.269590434Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/driver-error-rollback-and-private-diagnostics","Output":" \t \t\t\t\t/work/source/models/auth/source_operation_postgres_test.go:106\n"}
{"Time":"2026-10-18T01:06:40.26959845Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/driver-error-rollback-and-private-diagnostics","Output":" \tError: \t\"[Slow SQL Query] BEGIN TRANSACTION [] - 335.752µs\\n[Slow SQL Query] LOCK TABLE login_source_operation, login_source, \\\"user\\\", external_login_user IN EXCLUSIVE MODE [] - 163.167µs\\n[Slow SQL Query] SELECT \\\"operation_id\\\", \\\"case_id\\\", \\\"target_name\\\", \\\"target_id\\\", \\\"phase\\\", \\\"before_state\\\", \\\"desired_state\\\", \\\"post_state\\\" FROM \\\"login_source_operation\\\" WHERE \\\"operation_id\\\"=$1 LIMIT 1 [postgres-error-operation] - 657.871µs\\n[Slow SQL Query] SELECT \\\"id\\\", \\\"type\\\", \\\"name\\\", \\\"is_active\\\", \\\"is_sync_enabled\\\", \\\"cfg\\\", \\\"created_unix\\\", \\\"updated_unix\\\" FROM \\\"login_source\\\" ORDER BY id [] - 425.834µs\\n[Slow SQL Query] INSERT INTO \\\"login_source\\\" (\\\"type\\\",\\\"name\\\",\\\"is_active\\\",\\\"is_sync_enabled\\\",\\\"cfg\\\",\\\"created_unix\\\",\\\"updated_unix\\\") VALUES ($1,$2,$3,$4,$5,$6,$7) RETURNING \\\"id\\\" [OAuth2 operation-test false false {\\\"Provider\\\":\\\"openidConnect\\\",\\\"ClientID\\\":\\\"synthetic-client\\\",\\\"ClientSecret\\\":\\\"synthetic-private-original\\\",\\\"OpenIDConnectAutoDiscoveryURL\\\":\\\"\\\",\\"}
{"Time":"2026-10-18T01:06:40.269628144Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/driver-error-rollback-and-private-diagnostics","Output":"\"CustomURLMapping\\\":null,\\\"IconURL\\\":\\\"\\\",\\\"Scopes\\\":[\\\"openid\\\",\\\"profile\\\",\\\"groups\\\"],\\\"AttributeSSHPublicKey\\\":\\\"\\\",\\\"RequiredClaimName\\\":\\\"groups\\\",\\\"RequiredClaimValues\\\":[\\\"g1\\\",\\\"g2\\\",\\\"g3\\\"],\\\"RequiredClaimValue\\\":\\\"\\\",\\\"GroupClaimName\\\":\\\"\\\",\\\"AdminGroup\\\":\\\"\\\",\\\"GroupTeamMap\\\":\\\"\\\",\\\"GroupTeamMapRemoval\\\":false,\\\"RestrictedGroup\\\":\\\"\\\"} 1792285600 1792285600] - 862.132µs\\n[Error SQL Query] INSERT INTO \\\"login_source\\\" (\\\"type\\\",\\\"name\\\",\\\"is_active\\\",\\\"is_sync_enabled\\\",\\\"cfg\\\",\\\"created_unix\\\",\\\"updated_unix\\\") VALUES ($1,$2,$3,$4,$5,$6,$7) RETURNING \\\"id\\\" [OAuth2 operation-test false false {\\\"Provider\\\":\\\"openidConnect\\\",\\\"ClientID\\\":\\\"synthetic-client\\\",\\\"ClientSecret\\\":\\\"synthetic-private-original\\\",\\\"OpenIDConnectAutoDiscoveryURL\\\":\\\"\\\",\\\"CustomURLMapping\\\":null,\\\"IconURL\\\":\\\"\\\",\\\"Scopes\\\":[\\\"openid\\\",\\\"profile\\\",\\\"groups\\\"],\\\"AttributeSSHPublicKey\\\":\\\"\\\",\\\"RequiredClaimName\\\":\\\"groups\\\",\\\"RequiredClaimValues\\\":[\\\"g1\\\",\\\"g2\\\",\\\"g3\\\"],\\\"RequiredClaimValue\\\":\\\"\\\",\\\"GroupClaimName\\\":\\\"\\\",\\\"Admi"}
{"Time":"2026-10-18T01:06:40.269647135Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/driver-error-rollback-and-private-diagnostics","Output":"nGroup\\\":\\\"\\\",\\\"GroupTeamMap\\\":\\\"\\\",\\\"GroupTeamMapRemoval\\\":false,\\\"RestrictedGroup\\\":\\\"\\\"} 1792285600 1792285600] - pq: {\\\"Provider\\\":\\\"openidConnect\\\",\\\"ClientID\\\":\\\"synthetic-client\\\",\\\"ClientSecret\\\":\\\"synthetic-private-original\\\",\\\"OpenIDConnectAutoDiscoveryURL\\\":\\\"\\\",\\\"CustomURLMapping\\\":null,\\\"IconURL\\\":\\\"\\\",\\\"Scopes\\\":[\\\"openid\\\",\\\"profile\\\",\\\"groups\\\"],\\\"AttributeSSHPublicKey\\\":\\\"\\\",\\\"RequiredClaimName\\\":\\\"groups\\\",\\\"RequiredClaimValues\\\":[\\\"g1\\\",\\\"g2\\\",\\\"g3\\\"],\\\"RequiredClaimValue\\\":\\\"\\\",\\\"GroupClaimName\\\":\\\"\\\",\\\"AdminGroup\\\":\\\"\\\",\\\"GroupTeamMap\\\":\\\"\\\",\\\"GroupTeamMapRemoval\\\":false,\\\"RestrictedGroup\\\":\\\"\\\"}\\n[Slow SQL Query] ROLLBACK [] - 288.315µs\" does not contain \"[Error SQL Query] [owner-confined query]\"\n"}
{"Time":"2026-10-18T01:06:40.269663339Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/driver-error-rollback-and-private-diagnostics","Output":" \tTest: \tTestSourceOperationPostgres/default/driver-error-rollback-and-private-diagnostics\n"}
{"Time":"2026-10-18T01:06:40.269670029Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/uncooperative-writers-excluded"}
{"Time":"2026-10-18T01:06:40.269674385Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/uncooperative-writers-excluded","Output":"=== RUN TestSourceOperationPostgres/default/uncooperative-writers-excluded\n"}
{"Time":"2026-10-18T01:06:40.962767266Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/concurrent-preparation-has-one-owner"}
{"Time":"2026-10-18T01:06:40.962806248Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/concurrent-preparation-has-one-owner","Output":"=== RUN TestSourceOperationPostgres/default/concurrent-preparation-has-one-owner\n"}
{"Time":"2026-10-18T01:06:41.060420719Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public"}
{"Time":"2026-10-18T01:06:41.060475904Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public","Output":"=== RUN TestSourceOperationPostgres/public\n"}
{"Time":"2026-10-18T01:06:42.879901435Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/create-reconcile-inverse"}
{"Time":"2026-10-18T01:06:42.879936711Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/create-reconcile-inverse","Output":"=== RUN TestSourceOperationPostgres/public/create-reconcile-inverse\n"}
{"Time":"2026-10-18T01:06:43.017177562Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/exact-raw-preexisting-restoration"}
{"Time":"2026-10-18T01:06:43.017220791Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/exact-raw-preexisting-restoration","Output":"=== RUN TestSourceOperationPostgres/public/exact-raw-preexisting-restoration\n"}
{"Time":"2026-10-18T01:06:43.113976457Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/unchanged-preexisting-survives"}
{"Time":"2026-10-18T01:06:43.114021201Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/unchanged-preexisting-survives","Output":"=== RUN TestSourceOperationPostgres/public/unchanged-preexisting-survives\n"}
{"Time":"2026-10-18T01:06:43.210664143Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/private-drift-before-apply"}
{"Time":"2026-10-18T01:06:43.210705694Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/private-drift-before-apply","Output":"=== RUN TestSourceOperationPostgres/public/private-drift-before-apply\n"}
{"Time":"2026-10-18T01:06:43.308260517Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/private-drift-before-inverse"}
{"Time":"2026-10-18T01:06:43.308303457Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/private-drift-before-inverse","Output":"=== RUN TestSourceOperationPostgres/public/private-drift-before-inverse\n"}
{"Time":"2026-10-18T01:06:43.424171027Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/linked-user-refuses-deletion"}
{"Time":"2026-10-18T01:06:43.424242344Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/linked-user-refuses-deletion","Output":"=== RUN TestSourceOperationPostgres/public/linked-user-refuses-deletion\n"}
{"Time":"2026-10-18T01:06:43.53111742Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/linked-external-refuses-deletion"}
{"Time":"2026-10-18T01:06:43.531165906Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/linked-external-refuses-deletion","Output":"=== RUN TestSourceOperationPostgres/public/linked-external-refuses-deletion\n"}
{"Time":"2026-10-18T01:06:43.628005322Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/unexpected-trigger-post-state-rolls-back"}
{"Time":"2026-10-18T01:06:43.628048172Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/unexpected-trigger-post-state-rolls-back","Output":"=== RUN TestSourceOperationPostgres/public/unexpected-trigger-post-state-rolls-back\n"}
{"Time":"2026-10-18T01:06:43.725621901Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/driver-error-rollback-and-private-diagnostics"}
{"Time":"2026-10-18T01:06:43.725657204Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/driver-error-rollback-and-private-diagnostics","Output":"=== RUN TestSourceOperationPostgres/public/driver-error-rollback-and-private-diagnostics\n"}
{"Time":"2026-10-18T01:06:43.830330636Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/driver-error-rollback-and-private-diagnostics","Output":" source_operation_postgres_test.go:247: \n"}
{"Time":"2026-10-18T01:06:43.830395028Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/driver-error-rollback-and-private-diagnostics","Output":" \tError Trace:\t/work/source/models/auth/source_operation_postgres_test.go:247\n"}
{"Time":"2026-10-18T01:06:43.830424434Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/driver-error-rollback-and-private-diagnostics","Output":" \t \t\t\t\t/work/source/models/auth/source_operation_postgres_test.go:106\n"}
{"Time":"2026-10-18T01:06:43.830433361Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/driver-error-rollback-and-private-diagnostics","Output":" \tError: \t\"[Slow SQL Query] BEGIN TRANSACTION [] - 334.508µs\\n[Slow SQL Query] LOCK TABLE login_source_operation, login_source, \\\"user\\\", external_login_user IN EXCLUSIVE MODE [] - 294.088µs\\n[Slow SQL Query] SELECT \\\"operation_id\\\", \\\"case_id\\\", \\\"target_name\\\", \\\"target_id\\\", \\\"phase\\\", \\\"before_state\\\", \\\"desired_state\\\", \\\"post_state\\\" FROM \\\"public\\\".\\\"login_source_operation\\\" WHERE \\\"operation_id\\\"=$1 LIMIT 1 [postgres-error-operation] - 816.656µs\\n[Slow SQL Query] SELECT \\\"id\\\", \\\"type\\\", \\\"name\\\", \\\"is_active\\\", \\\"is_sync_enabled\\\", \\\"cfg\\\", \\\"created_unix\\\", \\\"updated_unix\\\" FROM \\\"public\\\".\\\"login_source\\\" ORDER BY id [] - 796.93µs\\n[Slow SQL Query] INSERT INTO \\\"public\\\".\\\"login_source\\\" (\\\"type\\\",\\\"name\\\",\\\"is_active\\\",\\\"is_sync_enabled\\\",\\\"cfg\\\",\\\"created_unix\\\",\\\"updated_unix\\\") VALUES ($1,$2,$3,$4,$5,$6,$7) RETURNING \\\"id\\\" [OAuth2 operation-test false false {\\\"Provider\\\":\\\"openidConnect\\\",\\\"ClientID\\\":\\\"synthetic-client\\\",\\\"ClientSecret\\\":\\\"synthetic-private-original\\\",\\\"OpenID"}
{"Time":"2026-10-18T01:06:43.830452522Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/driver-error-rollback-and-private-diagnostics","Output":"ConnectAutoDiscoveryURL\\\":\\\"\\\",\\\"CustomURLMapping\\\":null,\\\"IconURL\\\":\\\"\\\",\\\"Scopes\\\":[\\\"openid\\\",\\\"profile\\\",\\\"groups\\\"],\\\"AttributeSSHPublicKey\\\":\\\"\\\",\\\"RequiredClaimName\\\":\\\"groups\\\",\\\"RequiredClaimValues\\\":[\\\"g1\\\",\\\"g2\\\",\\\"g3\\\"],\\\"RequiredClaimValue\\\":\\\"\\\",\\\"GroupClaimName\\\":\\\"\\\",\\\"AdminGroup\\\":\\\"\\\",\\\"GroupTeamMap\\\":\\\"\\\",\\\"GroupTeamMapRemoval\\\":false,\\\"RestrictedGroup\\\":\\\"\\\"} 1792285603 1792285603] - 1.757047ms\\n[Error SQL Query] INSERT INTO \\\"public\\\".\\\"login_source\\\" (\\\"type\\\",\\\"name\\\",\\\"is_active\\\",\\\"is_sync_enabled\\\",\\\"cfg\\\",\\\"created_unix\\\",\\\"updated_unix\\\") VALUES ($1,$2,$3,$4,$5,$6,$7) RETURNING \\\"id\\\" [OAuth2 operation-test false false {\\\"Provider\\\":\\\"openidConnect\\\",\\\"ClientID\\\":\\\"synthetic-client\\\",\\\"ClientSecret\\\":\\\"synthetic-private-original\\\",\\\"OpenIDConnectAutoDiscoveryURL\\\":\\\"\\\",\\\"CustomURLMapping\\\":null,\\\"IconURL\\\":\\\"\\\",\\\"Scopes\\\":[\\\"openid\\\",\\\"profile\\\",\\\"groups\\\"],\\\"AttributeSSHPublicKey\\\":\\\"\\\",\\\"RequiredClaimName\\\":\\\"groups\\\",\\\"RequiredClaimValues\\\":[\\\"g1\\\",\\\"g2\\\",\\\"g3\\\"],\\\"RequiredClaim"}
{"Time":"2026-10-18T01:06:43.830514327Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/driver-error-rollback-and-private-diagnostics","Output":"Value\\\":\\\"\\\",\\\"GroupClaimName\\\":\\\"\\\",\\\"AdminGroup\\\":\\\"\\\",\\\"GroupTeamMap\\\":\\\"\\\",\\\"GroupTeamMapRemoval\\\":false,\\\"RestrictedGroup\\\":\\\"\\\"} 1792285603 1792285603] - pq: {\\\"Provider\\\":\\\"openidConnect\\\",\\\"ClientID\\\":\\\"synthetic-client\\\",\\\"ClientSecret\\\":\\\"synthetic-private-original\\\",\\\"OpenIDConnectAutoDiscoveryURL\\\":\\\"\\\",\\\"CustomURLMapping\\\":null,\\\"IconURL\\\":\\\"\\\",\\\"Scopes\\\":[\\\"openid\\\",\\\"profile\\\",\\\"groups\\\"],\\\"AttributeSSHPublicKey\\\":\\\"\\\",\\\"RequiredClaimName\\\":\\\"groups\\\",\\\"RequiredClaimValues\\\":[\\\"g1\\\",\\\"g2\\\",\\\"g3\\\"],\\\"RequiredClaimValue\\\":\\\"\\\",\\\"GroupClaimName\\\":\\\"\\\",\\\"AdminGroup\\\":\\\"\\\",\\\"GroupTeamMap\\\":\\\"\\\",\\\"GroupTeamMapRemoval\\\":false,\\\"RestrictedGroup\\\":\\\"\\\"}\\n[Slow SQL Query] ROLLBACK [] - 341.213µs\" does not contain \"[Error SQL Query] [owner-confined query]\"\n"}
{"Time":"2026-10-18T01:06:43.830529953Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/driver-error-rollback-and-private-diagnostics","Output":" \tTest: \tTestSourceOperationPostgres/public/driver-error-rollback-and-private-diagnostics\n"}
{"Time":"2026-10-18T01:06:43.830538619Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/uncooperative-writers-excluded"}
{"Time":"2026-10-18T01:06:43.83054412Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/uncooperative-writers-excluded","Output":"=== RUN TestSourceOperationPostgres/public/uncooperative-writers-excluded\n"}
{"Time":"2026-10-18T01:06:44.53295111Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/concurrent-preparation-has-one-owner"}
{"Time":"2026-10-18T01:06:44.532986602Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/concurrent-preparation-has-one-owner","Output":"=== RUN TestSourceOperationPostgres/public/concurrent-preparation-has-one-owner\n"}
{"Time":"2026-10-18T01:06:44.627549722Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named"}
{"Time":"2026-10-18T01:06:44.627631175Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named","Output":"=== RUN TestSourceOperationPostgres/named\n"}
{"Time":"2026-10-18T01:06:50.025184426Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/create-reconcile-inverse"}
{"Time":"2026-10-18T01:06:50.025261487Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/create-reconcile-inverse","Output":"=== RUN TestSourceOperationPostgres/named/create-reconcile-inverse\n"}
{"Time":"2026-10-18T01:06:50.149811008Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/exact-raw-preexisting-restoration"}
{"Time":"2026-10-18T01:06:50.14985439Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/exact-raw-preexisting-restoration","Output":"=== RUN TestSourceOperationPostgres/named/exact-raw-preexisting-restoration\n"}
{"Time":"2026-10-18T01:06:50.24929962Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/unchanged-preexisting-survives"}
{"Time":"2026-10-18T01:06:50.249336834Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/unchanged-preexisting-survives","Output":"=== RUN TestSourceOperationPostgres/named/unchanged-preexisting-survives\n"}
{"Time":"2026-10-18T01:06:50.352989533Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/private-drift-before-apply"}
{"Time":"2026-10-18T01:06:50.353027991Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/private-drift-before-apply","Output":"=== RUN TestSourceOperationPostgres/named/private-drift-before-apply\n"}
{"Time":"2026-10-18T01:06:50.446647311Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/private-drift-before-inverse"}
{"Time":"2026-10-18T01:06:50.446690332Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/private-drift-before-inverse","Output":"=== RUN TestSourceOperationPostgres/named/private-drift-before-inverse\n"}
{"Time":"2026-10-18T01:06:50.549036411Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/linked-user-refuses-deletion"}
{"Time":"2026-10-18T01:06:50.549077349Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/linked-user-refuses-deletion","Output":"=== RUN TestSourceOperationPostgres/named/linked-user-refuses-deletion\n"}
{"Time":"2026-10-18T01:06:50.645560295Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/linked-external-refuses-deletion"}
{"Time":"2026-10-18T01:06:50.645618583Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/linked-external-refuses-deletion","Output":"=== RUN TestSourceOperationPostgres/named/linked-external-refuses-deletion\n"}
{"Time":"2026-10-18T01:06:50.737879962Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/unexpected-trigger-post-state-rolls-back"}
{"Time":"2026-10-18T01:06:50.737942515Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/unexpected-trigger-post-state-rolls-back","Output":"=== RUN TestSourceOperationPostgres/named/unexpected-trigger-post-state-rolls-back\n"}
{"Time":"2026-10-18T01:06:50.829933963Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/driver-error-rollback-and-private-diagnostics"}
{"Time":"2026-10-18T01:06:50.829970293Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/driver-error-rollback-and-private-diagnostics","Output":"=== RUN TestSourceOperationPostgres/named/driver-error-rollback-and-private-diagnostics\n"}
{"Time":"2026-10-18T01:06:50.922610464Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/driver-error-rollback-and-private-diagnostics","Output":" source_operation_postgres_test.go:247: \n"}
{"Time":"2026-10-18T01:06:50.922647002Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/driver-error-rollback-and-private-diagnostics","Output":" \tError Trace:\t/work/source/models/auth/source_operation_postgres_test.go:247\n"}
{"Time":"2026-10-18T01:06:50.922663016Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/driver-error-rollback-and-private-diagnostics","Output":" \t \t\t\t\t/work/source/models/auth/source_operation_postgres_test.go:106\n"}
{"Time":"2026-10-18T01:06:50.9226706Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/driver-error-rollback-and-private-diagnostics","Output":" \tError: \t\"[Slow SQL Query] BEGIN TRANSACTION [] - 414.267µs\\n[Slow SQL Query] LOCK TABLE login_source_operation, login_source, \\\"user\\\", external_login_user IN EXCLUSIVE MODE [] - 368.37µs\\n[Slow SQL Query] SELECT \\\"operation_id\\\", \\\"case_id\\\", \\\"target_name\\\", \\\"target_id\\\", \\\"phase\\\", \\\"before_state\\\", \\\"desired_state\\\", \\\"post_state\\\" FROM \\\"custodian_named\\\".\\\"login_source_operation\\\" WHERE \\\"operation_id\\\"=$1 LIMIT 1 [postgres-error-operation] - 679.184µs\\n[Slow SQL Query] SELECT \\\"id\\\", \\\"type\\\", \\\"name\\\", \\\"is_active\\\", \\\"is_sync_enabled\\\", \\\"cfg\\\", \\\"created_unix\\\", \\\"updated_unix\\\" FROM \\\"custodian_named\\\".\\\"login_source\\\" ORDER BY id [] - 638.32µs\\n[Slow SQL Query] INSERT INTO \\\"custodian_named\\\".\\\"login_source\\\" (\\\"type\\\",\\\"name\\\",\\\"is_active\\\",\\\"is_sync_enabled\\\",\\\"cfg\\\",\\\"created_unix\\\",\\\"updated_unix\\\") VALUES ($1,$2,$3,$4,$5,$6,$7) RETURNING \\\"id\\\" [OAuth2 operation-test false false {\\\"Provider\\\":\\\"openidConnect\\\",\\\"ClientID\\\":\\\"synthetic-client\\\",\\\"ClientSecret\\\":\\\"synthetic-p"}
{"Time":"2026-10-18T01:06:50.922680023Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/driver-error-rollback-and-private-diagnostics","Output":"rivate-original\\\",\\\"OpenIDConnectAutoDiscoveryURL\\\":\\\"\\\",\\\"CustomURLMapping\\\":null,\\\"IconURL\\\":\\\"\\\",\\\"Scopes\\\":[\\\"openid\\\",\\\"profile\\\",\\\"groups\\\"],\\\"AttributeSSHPublicKey\\\":\\\"\\\",\\\"RequiredClaimName\\\":\\\"groups\\\",\\\"RequiredClaimValues\\\":[\\\"g1\\\",\\\"g2\\\",\\\"g3\\\"],\\\"RequiredClaimValue\\\":\\\"\\\",\\\"GroupClaimName\\\":\\\"\\\",\\\"AdminGroup\\\":\\\"\\\",\\\"GroupTeamMap\\\":\\\"\\\",\\\"GroupTeamMapRemoval\\\":false,\\\"RestrictedGroup\\\":\\\"\\\"} 1792285610 1792285610] - 946.901µs\\n[Error SQL Query] INSERT INTO \\\"custodian_named\\\".\\\"login_source\\\" (\\\"type\\\",\\\"name\\\",\\\"is_active\\\",\\\"is_sync_enabled\\\",\\\"cfg\\\",\\\"created_unix\\\",\\\"updated_unix\\\") VALUES ($1,$2,$3,$4,$5,$6,$7) RETURNING \\\"id\\\" [OAuth2 operation-test false false {\\\"Provider\\\":\\\"openidConnect\\\",\\\"ClientID\\\":\\\"synthetic-client\\\",\\\"ClientSecret\\\":\\\"synthetic-private-original\\\",\\\"OpenIDConnectAutoDiscoveryURL\\\":\\\"\\\",\\\"CustomURLMapping\\\":null,\\\"IconURL\\\":\\\"\\\",\\\"Scopes\\\":[\\\"openid\\\",\\\"profile\\\",\\\"groups\\\"],\\\"AttributeSSHPublicKey\\\":\\\"\\\",\\\"RequiredClaimName\\\":\\\"groups\\\",\\\"RequiredClaimValues\\\":[\\\""}
{"Time":"2026-10-18T01:06:50.922688445Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/driver-error-rollback-and-private-diagnostics","Output":"g1\\\",\\\"g2\\\",\\\"g3\\\"],\\\"RequiredClaimValue\\\":\\\"\\\",\\\"GroupClaimName\\\":\\\"\\\",\\\"AdminGroup\\\":\\\"\\\",\\\"GroupTeamMap\\\":\\\"\\\",\\\"GroupTeamMapRemoval\\\":false,\\\"RestrictedGroup\\\":\\\"\\\"} 1792285610 1792285610] - pq: {\\\"Provider\\\":\\\"openidConnect\\\",\\\"ClientID\\\":\\\"synthetic-client\\\",\\\"ClientSecret\\\":\\\"synthetic-private-original\\\",\\\"OpenIDConnectAutoDiscoveryURL\\\":\\\"\\\",\\\"CustomURLMapping\\\":null,\\\"IconURL\\\":\\\"\\\",\\\"Scopes\\\":[\\\"openid\\\",\\\"profile\\\",\\\"groups\\\"],\\\"AttributeSSHPublicKey\\\":\\\"\\\",\\\"RequiredClaimName\\\":\\\"groups\\\",\\\"RequiredClaimValues\\\":[\\\"g1\\\",\\\"g2\\\",\\\"g3\\\"],\\\"RequiredClaimValue\\\":\\\"\\\",\\\"GroupClaimName\\\":\\\"\\\",\\\"AdminGroup\\\":\\\"\\\",\\\"GroupTeamMap\\\":\\\"\\\",\\\"GroupTeamMapRemoval\\\":false,\\\"RestrictedGroup\\\":\\\"\\\"}\\n[Slow SQL Query] ROLLBACK [] - 320.461µs\" does not contain \"[Error SQL Query] [owner-confined query]\"\n"}
{"Time":"2026-10-18T01:06:50.922709067Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/driver-error-rollback-and-private-diagnostics","Output":" \tTest: \tTestSourceOperationPostgres/named/driver-error-rollback-and-private-diagnostics\n"}
{"Time":"2026-10-18T01:06:50.922714892Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/uncooperative-writers-excluded"}
{"Time":"2026-10-18T01:06:50.922718382Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/uncooperative-writers-excluded","Output":"=== RUN TestSourceOperationPostgres/named/uncooperative-writers-excluded\n"}
{"Time":"2026-10-18T01:06:51.624657036Z","Action":"run","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/concurrent-preparation-has-one-owner"}
{"Time":"2026-10-18T01:06:51.624706866Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/concurrent-preparation-has-one-owner","Output":"=== RUN TestSourceOperationPostgres/named/concurrent-preparation-has-one-owner\n"}
{"Time":"2026-10-18T01:06:52.113053564Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres","Output":"--- FAIL: TestSourceOperationPostgres (11.01s)\n"}
{"Time":"2026-10-18T01:06:52.11313976Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default","Output":" --- FAIL: TestSourceOperationPostgres/default (3.54s)\n"}
{"Time":"2026-10-18T01:06:52.113151392Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/create-reconcile-inverse","Output":" --- PASS: TestSourceOperationPostgres/default/create-reconcile-inverse (0.11s)\n"}
{"Time":"2026-10-18T01:06:52.11316426Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/create-reconcile-inverse","Elapsed":0.11}
{"Time":"2026-10-18T01:06:52.113176199Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/exact-raw-preexisting-restoration","Output":" --- PASS: TestSourceOperationPostgres/default/exact-raw-preexisting-restoration (0.10s)\n"}
{"Time":"2026-10-18T01:06:52.11318637Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/exact-raw-preexisting-restoration","Elapsed":0.1}
{"Time":"2026-10-18T01:06:52.113192231Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/unchanged-preexisting-survives","Output":" --- PASS: TestSourceOperationPostgres/default/unchanged-preexisting-survives (0.10s)\n"}
{"Time":"2026-10-18T01:06:52.113200834Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/unchanged-preexisting-survives","Elapsed":0.1}
{"Time":"2026-10-18T01:06:52.113210076Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/private-drift-before-apply","Output":" --- PASS: TestSourceOperationPostgres/default/private-drift-before-apply (0.09s)\n"}
{"Time":"2026-10-18T01:06:52.113219743Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/private-drift-before-apply","Elapsed":0.09}
{"Time":"2026-10-18T01:06:52.113228859Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/private-drift-before-inverse","Output":" --- PASS: TestSourceOperationPostgres/default/private-drift-before-inverse (0.10s)\n"}
{"Time":"2026-10-18T01:06:52.11327959Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/private-drift-before-inverse","Elapsed":0.1}
{"Time":"2026-10-18T01:06:52.113285208Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/linked-user-refuses-deletion","Output":" --- PASS: TestSourceOperationPostgres/default/linked-user-refuses-deletion (0.10s)\n"}
{"Time":"2026-10-18T01:06:52.113290222Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/linked-user-refuses-deletion","Elapsed":0.1}
{"Time":"2026-10-18T01:06:52.113298049Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/linked-external-refuses-deletion","Output":" --- PASS: TestSourceOperationPostgres/default/linked-external-refuses-deletion (0.10s)\n"}
{"Time":"2026-10-18T01:06:52.113305849Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/linked-external-refuses-deletion","Elapsed":0.1}
{"Time":"2026-10-18T01:06:52.11331235Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/unexpected-trigger-post-state-rolls-back","Output":" --- PASS: TestSourceOperationPostgres/default/unexpected-trigger-post-state-rolls-back (0.09s)\n"}
{"Time":"2026-10-18T01:06:52.11332033Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/unexpected-trigger-post-state-rolls-back","Elapsed":0.09}
{"Time":"2026-10-18T01:06:52.113327355Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/driver-error-rollback-and-private-diagnostics","Output":" --- FAIL: TestSourceOperationPostgres/default/driver-error-rollback-and-private-diagnostics (0.10s)\n"}
{"Time":"2026-10-18T01:06:52.113333604Z","Action":"fail","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/driver-error-rollback-and-private-diagnostics","Elapsed":0.1}
{"Time":"2026-10-18T01:06:52.113340619Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/uncooperative-writers-excluded","Output":" --- PASS: TestSourceOperationPostgres/default/uncooperative-writers-excluded (0.69s)\n"}
{"Time":"2026-10-18T01:06:52.113348446Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/uncooperative-writers-excluded","Elapsed":0.69}
{"Time":"2026-10-18T01:06:52.113355687Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/concurrent-preparation-has-one-owner","Output":" --- PASS: TestSourceOperationPostgres/default/concurrent-preparation-has-one-owner (0.10s)\n"}
{"Time":"2026-10-18T01:06:52.113363Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default/concurrent-preparation-has-one-owner","Elapsed":0.1}
{"Time":"2026-10-18T01:06:52.113367635Z","Action":"fail","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/default","Elapsed":3.54}
{"Time":"2026-10-18T01:06:52.113374912Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public","Output":" --- FAIL: TestSourceOperationPostgres/public (3.57s)\n"}
{"Time":"2026-10-18T01:06:52.113383Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/create-reconcile-inverse","Output":" --- PASS: TestSourceOperationPostgres/public/create-reconcile-inverse (0.14s)\n"}
{"Time":"2026-10-18T01:06:52.113390962Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/create-reconcile-inverse","Elapsed":0.14}
{"Time":"2026-10-18T01:06:52.113397563Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/exact-raw-preexisting-restoration","Output":" --- PASS: TestSourceOperationPostgres/public/exact-raw-preexisting-restoration (0.10s)\n"}
{"Time":"2026-10-18T01:06:52.11341374Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/exact-raw-preexisting-restoration","Elapsed":0.1}
{"Time":"2026-10-18T01:06:52.11341934Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/unchanged-preexisting-survives","Output":" --- PASS: TestSourceOperationPostgres/public/unchanged-preexisting-survives (0.10s)\n"}
{"Time":"2026-10-18T01:06:52.113427257Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/unchanged-preexisting-survives","Elapsed":0.1}
{"Time":"2026-10-18T01:06:52.113434453Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/private-drift-before-apply","Output":" --- PASS: TestSourceOperationPostgres/public/private-drift-before-apply (0.10s)\n"}
{"Time":"2026-10-18T01:06:52.113442253Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/private-drift-before-apply","Elapsed":0.1}
{"Time":"2026-10-18T01:06:52.113448132Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/private-drift-before-inverse","Output":" --- PASS: TestSourceOperationPostgres/public/private-drift-before-inverse (0.12s)\n"}
{"Time":"2026-10-18T01:06:52.113453993Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/private-drift-before-inverse","Elapsed":0.12}
{"Time":"2026-10-18T01:06:52.113467798Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/linked-user-refuses-deletion","Output":" --- PASS: TestSourceOperationPostgres/public/linked-user-refuses-deletion (0.11s)\n"}
{"Time":"2026-10-18T01:06:52.113475039Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/linked-user-refuses-deletion","Elapsed":0.11}
{"Time":"2026-10-18T01:06:52.113480459Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/linked-external-refuses-deletion","Output":" --- PASS: TestSourceOperationPostgres/public/linked-external-refuses-deletion (0.10s)\n"}
{"Time":"2026-10-18T01:06:52.113488331Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/linked-external-refuses-deletion","Elapsed":0.1}
{"Time":"2026-10-18T01:06:52.11349256Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/unexpected-trigger-post-state-rolls-back","Output":" --- PASS: TestSourceOperationPostgres/public/unexpected-trigger-post-state-rolls-back (0.10s)\n"}
{"Time":"2026-10-18T01:06:52.113517592Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/unexpected-trigger-post-state-rolls-back","Elapsed":0.1}
{"Time":"2026-10-18T01:06:52.113522849Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/driver-error-rollback-and-private-diagnostics","Output":" --- FAIL: TestSourceOperationPostgres/public/driver-error-rollback-and-private-diagnostics (0.10s)\n"}
{"Time":"2026-10-18T01:06:52.113530667Z","Action":"fail","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/driver-error-rollback-and-private-diagnostics","Elapsed":0.1}
{"Time":"2026-10-18T01:06:52.113544129Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/uncooperative-writers-excluded","Output":" --- PASS: TestSourceOperationPostgres/public/uncooperative-writers-excluded (0.70s)\n"}
{"Time":"2026-10-18T01:06:52.113550604Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/uncooperative-writers-excluded","Elapsed":0.7}
{"Time":"2026-10-18T01:06:52.113554887Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/concurrent-preparation-has-one-owner","Output":" --- PASS: TestSourceOperationPostgres/public/concurrent-preparation-has-one-owner (0.09s)\n"}
{"Time":"2026-10-18T01:06:52.11356789Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public/concurrent-preparation-has-one-owner","Elapsed":0.09}
{"Time":"2026-10-18T01:06:52.113573057Z","Action":"fail","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/public","Elapsed":3.57}
{"Time":"2026-10-18T01:06:52.113577169Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named","Output":" --- FAIL: TestSourceOperationPostgres/named (3.90s)\n"}
{"Time":"2026-10-18T01:06:52.113582227Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/create-reconcile-inverse","Output":" --- PASS: TestSourceOperationPostgres/named/create-reconcile-inverse (0.12s)\n"}
{"Time":"2026-10-18T01:06:52.11358697Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/create-reconcile-inverse","Elapsed":0.12}
{"Time":"2026-10-18T01:06:52.113593661Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/exact-raw-preexisting-restoration","Output":" --- PASS: TestSourceOperationPostgres/named/exact-raw-preexisting-restoration (0.10s)\n"}
{"Time":"2026-10-18T01:06:52.113603869Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/exact-raw-preexisting-restoration","Elapsed":0.1}
{"Time":"2026-10-18T01:06:52.113608071Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/unchanged-preexisting-survives","Output":" --- PASS: TestSourceOperationPostgres/named/unchanged-preexisting-survives (0.10s)\n"}
{"Time":"2026-10-18T01:06:52.113615826Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/unchanged-preexisting-survives","Elapsed":0.1}
{"Time":"2026-10-18T01:06:52.113620181Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/private-drift-before-apply","Output":" --- PASS: TestSourceOperationPostgres/named/private-drift-before-apply (0.09s)\n"}
{"Time":"2026-10-18T01:06:52.113624852Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/private-drift-before-apply","Elapsed":0.09}
{"Time":"2026-10-18T01:06:52.113629216Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/private-drift-before-inverse","Output":" --- PASS: TestSourceOperationPostgres/named/private-drift-before-inverse (0.10s)\n"}
{"Time":"2026-10-18T01:06:52.113633914Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/private-drift-before-inverse","Elapsed":0.1}
{"Time":"2026-10-18T01:06:52.113637999Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/linked-user-refuses-deletion","Output":" --- PASS: TestSourceOperationPostgres/named/linked-user-refuses-deletion (0.10s)\n"}
{"Time":"2026-10-18T01:06:52.11364505Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/linked-user-refuses-deletion","Elapsed":0.1}
{"Time":"2026-10-18T01:06:52.113649785Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/linked-external-refuses-deletion","Output":" --- PASS: TestSourceOperationPostgres/named/linked-external-refuses-deletion (0.09s)\n"}
{"Time":"2026-10-18T01:06:52.113654483Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/linked-external-refuses-deletion","Elapsed":0.09}
{"Time":"2026-10-18T01:06:52.113660488Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/unexpected-trigger-post-state-rolls-back","Output":" --- PASS: TestSourceOperationPostgres/named/unexpected-trigger-post-state-rolls-back (0.09s)\n"}
{"Time":"2026-10-18T01:06:52.113672183Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/unexpected-trigger-post-state-rolls-back","Elapsed":0.09}
{"Time":"2026-10-18T01:06:52.113676773Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/driver-error-rollback-and-private-diagnostics","Output":" --- FAIL: TestSourceOperationPostgres/named/driver-error-rollback-and-private-diagnostics (0.09s)\n"}
{"Time":"2026-10-18T01:06:52.113681597Z","Action":"fail","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/driver-error-rollback-and-private-diagnostics","Elapsed":0.09}
{"Time":"2026-10-18T01:06:52.113689163Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/uncooperative-writers-excluded","Output":" --- PASS: TestSourceOperationPostgres/named/uncooperative-writers-excluded (0.70s)\n"}
{"Time":"2026-10-18T01:06:52.11369387Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/uncooperative-writers-excluded","Elapsed":0.7}
{"Time":"2026-10-18T01:06:52.113698Z","Action":"output","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/concurrent-preparation-has-one-owner","Output":" --- PASS: TestSourceOperationPostgres/named/concurrent-preparation-has-one-owner (0.49s)\n"}
{"Time":"2026-10-18T01:06:52.113706756Z","Action":"pass","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named/concurrent-preparation-has-one-owner","Elapsed":0.49}
{"Time":"2026-10-18T01:06:52.113710831Z","Action":"fail","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres/named","Elapsed":3.9}
{"Time":"2026-10-18T01:06:52.11371828Z","Action":"fail","Package":"forgejo.org/models/auth","Test":"TestSourceOperationPostgres","Elapsed":11.01}
{"Time":"2026-10-18T01:06:52.113722337Z","Action":"output","Package":"forgejo.org/models/auth","Output":"FAIL\n"}
{"Time":"2026-10-18T01:06:52.139381233Z","Action":"fail","Package":"forgejo.org/models/auth","Elapsed":11.287}

View file

@ -0,0 +1,309 @@
//go:build source_operation_postgres
package auth_test
import (
"context"
"errors"
"os"
"sync"
"testing"
"time"
auth "forgejo.org/models/auth"
"forgejo.org/models/db"
"forgejo.org/modules/setting"
oauth2 "forgejo.org/services/auth/source/oauth2"
"github.com/lib/pq"
"github.com/stretchr/testify/require"
"xorm.io/xorm"
)
// The real Forgejo engine/driver, registered model schemas and public operation
// functions run. Only the database, application configuration and actors are
// synthetic. No deployed owner database or authenticated operation is claimed.
func postgresOperationDB(t *testing.T, schema string) (context.Context, *xorm.Engine, *xorm.Engine) {
t.Helper()
require.Equal(t, "/run/source-operation-postgres", os.Getenv("CUSTODIAN_PG_SOCKET"), "explicit isolated socket required")
oldSettings, oldContext := setting.Database, db.DefaultContext
oldEngine, ok := db.GetEngine(oldContext).(*xorm.Engine)
require.True(t, ok)
raw, err := xorm.NewEngine("postgres", "host=/run/source-operation-postgres user=custodian_test dbname=custodian_source sslmode=disable search_path="+schema)
require.NoError(t, err)
_, err = raw.Exec(`CREATE SCHEMA IF NOT EXISTS "` + schema + `"`)
require.NoError(t, err)
setting.Database.Type = "postgres"
setting.Database.Host = "/run/source-operation-postgres"
setting.Database.Name = "custodian_source"
setting.Database.User = "custodian_test"
setting.Database.Passwd = ""
setting.Database.Schema = schema
setting.Database.SSLMode = "disable"
setting.Database.LogSQL = false
setting.Database.MaxOpenConns, setting.Database.MaxIdleConns = 8, 2
setting.Database.SlowQueryThreshold = 0
require.NoError(t, db.InitEngine(context.Background()))
engine, ok := db.GetEngine(db.DefaultContext).(*xorm.Engine)
require.True(t, ok)
t.Cleanup(func() {
_ = engine.Close()
_ = raw.Close()
setting.Database = oldSettings
db.SetDefaultEngine(oldContext, oldEngine)
})
version, err := engine.Query("SELECT current_setting('server_version_num')::integer / 10000 AS major, current_schema() AS schema")
require.NoError(t, err)
require.Equal(t, "16", string(version[0]["major"]))
require.Equal(t, schema, string(version[0]["schema"]))
require.NoError(t, db.SyncAllTables())
auth.RegisterTypeConfig(auth.OAuth2, new(oauth2.Source))
return db.DefaultContext, engine, raw
}
func resetPostgresOperations(t *testing.T, engine *xorm.Engine) {
t.Helper()
_, err := engine.Exec(`DROP TRIGGER IF EXISTS custodian_source_rewrite ON login_source`)
require.NoError(t, err)
_, err = engine.Exec(`TRUNCATE login_source_operation, login_source, "user", external_login_user RESTART IDENTITY CASCADE`)
require.NoError(t, err)
}
func TestSourceOperationPostgres(t *testing.T) {
for _, schema := range []string{"public", "custodian_named"} {
t.Run(schema, func(t *testing.T) {
ctx, engine, raw := postgresOperationDB(t, schema)
run := func(name string, f func(*testing.T)) {
t.Run(name, func(t *testing.T) { resetPostgresOperations(t, engine); f(t) })
}
run("create-reconcile-inverse", func(t *testing.T) {
before := operationRows(t, ctx)
_, err := auth.PrepareSourceOperation(ctx, "postgres-create-operation", "postgres-create-case", 0, operationSource())
require.NoError(t, err)
require.Equal(t, before, operationRows(t, ctx))
r, err := auth.ApplySourceOperation(ctx, "postgres-create-operation", "postgres-create-case")
require.NoError(t, err)
require.Equal(t, "applied", r.Phase)
require.Positive(t, r.SourceID)
post := operationRows(t, ctx)
again, err := auth.ApplySourceOperation(ctx, "postgres-create-operation", "postgres-create-case")
require.NoError(t, err)
require.Equal(t, r, again)
require.Equal(t, post, operationRows(t, ctx))
_, err = auth.InverseSourceOperation(ctx, "postgres-create-operation", "postgres-wrong-case")
require.ErrorIs(t, err, auth.ErrSourceOperationConflict)
r, err = auth.ReconcileSourceOperation(ctx, "postgres-create-operation", "postgres-create-case")
require.NoError(t, err)
require.Equal(t, "applied", r.Phase)
r, err = auth.InverseSourceOperation(ctx, "postgres-create-operation", "postgres-create-case")
require.NoError(t, err)
require.Equal(t, "reverted", r.Phase)
require.Equal(t, before, operationRows(t, ctx))
_, err = auth.ApplySourceOperation(ctx, "postgres-create-operation", "postgres-create-case")
require.ErrorIs(t, err, auth.ErrSourceOperationConflict)
})
run("exact-raw-preexisting-restoration", func(t *testing.T) {
s := operationSource()
require.NoError(t, auth.CreateSource(ctx, s))
_, err := engine.Exec(`UPDATE login_source SET cfg = ? WHERE id = ?`, `{"Provider":"openidConnect","ClientID":"synthetic-client","ClientSecret":"synthetic-private-original","FutureGuard":{"x":true}}`, s.ID)
require.NoError(t, err)
before := operationRows(t, ctx)
s.Cfg.(*oauth2.Source).ClientSecret = "synthetic-private-new"
_, err = auth.PrepareSourceOperation(ctx, "postgres-restore-operation", "postgres-restore-case", s.ID, s)
require.NoError(t, err)
_, err = auth.ApplySourceOperation(ctx, "postgres-restore-operation", "postgres-restore-case")
require.NoError(t, err)
_, err = auth.InverseSourceOperation(ctx, "postgres-restore-operation", "postgres-restore-case")
require.NoError(t, err)
require.Equal(t, before, operationRows(t, ctx))
})
run("unchanged-preexisting-survives", func(t *testing.T) {
s := operationSource()
require.NoError(t, auth.CreateSource(ctx, s))
before := operationRows(t, ctx)
_, err := auth.PrepareSourceOperation(ctx, "postgres-unchanged-operation", "postgres-unchanged-case", s.ID, s)
require.NoError(t, err)
r, err := auth.ApplySourceOperation(ctx, "postgres-unchanged-operation", "postgres-unchanged-case")
require.NoError(t, err)
require.Equal(t, "unchanged", r.Phase)
_, err = auth.InverseSourceOperation(ctx, "postgres-unchanged-operation", "postgres-unchanged-case")
require.NoError(t, err)
require.Equal(t, before, operationRows(t, ctx))
})
for _, stage := range []string{"before-apply", "before-inverse"} {
run("private-drift-"+stage, func(t *testing.T) {
s := operationSource()
require.NoError(t, auth.CreateSource(ctx, s))
_, err := auth.PrepareSourceOperation(ctx, "postgres-drift-operation", "postgres-drift-case", s.ID, s)
require.NoError(t, err)
if stage == "before-inverse" {
_, err = auth.ApplySourceOperation(ctx, "postgres-drift-operation", "postgres-drift-case")
require.NoError(t, err)
}
_, err = engine.Exec(`UPDATE login_source SET cfg = cfg || ' ' WHERE id = ?`, s.ID)
require.NoError(t, err)
before := operationRows(t, ctx)
if stage == "before-apply" {
_, err = auth.ApplySourceOperation(ctx, "postgres-drift-operation", "postgres-drift-case")
} else {
_, err = auth.InverseSourceOperation(ctx, "postgres-drift-operation", "postgres-drift-case")
}
require.ErrorIs(t, err, auth.ErrSourceOperationConflict)
require.Equal(t, before, operationRows(t, ctx))
})
}
for _, kind := range []string{"user", "external"} {
run("linked-"+kind+"-refuses-deletion", func(t *testing.T) {
_, err := auth.PrepareSourceOperation(ctx, "postgres-linked-operation", "postgres-linked-case", 0, operationSource())
require.NoError(t, err)
r, err := auth.ApplySourceOperation(ctx, "postgres-linked-operation", "postgres-linked-case")
require.NoError(t, err)
if kind == "user" {
_, err = engine.Exec(`INSERT INTO "user" (id, lower_name, name, login_source) VALUES (1, 'synthetic', 'synthetic', ?)`, r.SourceID)
} else {
_, err = engine.Exec(`INSERT INTO external_login_user (external_id, user_id, login_source_id) VALUES ('synthetic-external', 1, ?)`, r.SourceID)
}
require.NoError(t, err)
before := operationRows(t, ctx)
_, err = auth.InverseSourceOperation(ctx, "postgres-linked-operation", "postgres-linked-case")
require.True(t, auth.IsErrSourceInUse(err))
require.Equal(t, before, operationRows(t, ctx))
var count int64
if kind == "user" {
count, err = engine.Table("user").Where("login_source = ?", r.SourceID).Count()
} else {
count, err = engine.Table("external_login_user").Where("login_source_id = ?", r.SourceID).Count()
}
require.NoError(t, err)
require.EqualValues(t, 1, count)
})
}
run("unexpected-trigger-post-state-rolls-back", func(t *testing.T) {
before := operationRows(t, ctx)
_, err := auth.PrepareSourceOperation(ctx, "postgres-trigger-operation", "postgres-trigger-case", 0, operationSource())
require.NoError(t, err)
_, err = engine.Exec(`CREATE OR REPLACE FUNCTION custodian_rewrite_source() RETURNS trigger LANGUAGE plpgsql AS $$ BEGIN NEW.name := 'unexpected-rewrite'; RETURN NEW; END $$`)
require.NoError(t, err)
_, err = engine.Exec(`CREATE TRIGGER custodian_source_rewrite BEFORE INSERT ON login_source FOR EACH ROW EXECUTE FUNCTION custodian_rewrite_source()`)
require.NoError(t, err)
_, err = auth.ApplySourceOperation(ctx, "postgres-trigger-operation", "postgres-trigger-case")
require.ErrorIs(t, err, auth.ErrSourceOperationConflict)
require.Equal(t, before, operationRows(t, ctx))
r, err := auth.ReconcileSourceOperation(ctx, "postgres-trigger-operation", "postgres-trigger-case")
require.NoError(t, err)
require.Equal(t, "prepared", r.Phase)
})
run("uncooperative-writers-excluded", func(t *testing.T) {
locked, release, done := make(chan struct{}), make(chan struct{}), make(chan error, 1)
var once sync.Once
releaseLock := func() { once.Do(func() { close(release) }) }
defer releaseLock()
go func() {
done <- auth.SourceOperationPostgresTransactionForTest(ctx, func(context.Context) error { close(locked); <-release; return nil })
}()
select {
case <-locked:
case err := <-done:
t.Fatalf("lock acquisition refused: %v", err)
case <-time.After(5 * time.Second):
t.Fatal("lock acquisition timed out")
}
statements := []string{`UPDATE login_source_operation SET phase=phase WHERE operation_id='absent'`, `UPDATE login_source SET name=name WHERE id=-1`, `UPDATE "user" SET login_source=login_source WHERE id=-1`, `UPDATE external_login_user SET login_source_id=login_source_id WHERE user_id=-1`}
for _, statement := range statements {
session := raw.NewSession()
require.NoError(t, session.Begin())
_, err := session.Exec(`SET LOCAL lock_timeout='150ms'`)
require.NoError(t, err)
_, err = session.Exec(statement)
var pgerr *pq.Error
blocked := errors.As(err, &pgerr) && pgerr.Code == "55P03"
_ = session.Rollback()
_ = session.Close()
require.True(t, blocked, "an uncooperative writer escaped the actual table lock")
}
releaseLock()
select {
case err := <-done:
require.NoError(t, err)
case <-time.After(5 * time.Second):
t.Fatal("transaction did not finish")
}
for _, statement := range statements {
_, err := raw.Exec(statement)
require.NoError(t, err)
}
})
run("concurrent-preparation-has-one-owner", func(t *testing.T) {
start, done := make(chan struct{}), make(chan error, 2)
for _, id := range []string{"postgres-concurrent-first", "postgres-concurrent-second"} {
go func(id string) {
<-start
_, err := auth.PrepareSourceOperation(ctx, id, "postgres-concurrent-case", 0, operationSource())
done <- err
}(id)
}
close(start)
ok, conflict := 0, 0
for range 2 {
select {
case err := <-done:
if err == nil {
ok++
} else if errors.Is(err, auth.ErrSourceOperationConflict) {
conflict++
} else {
t.Fatal("unexpected concurrent preparation error")
}
case <-time.After(5 * time.Second):
t.Fatal("concurrent preparation timed out")
}
}
require.Equal(t, 1, ok)
require.Equal(t, 1, conflict)
})
})
}
}
func TestSourceOperationPostgresProcessRecovery(t *testing.T) {
step := os.Getenv("CUSTODIAN_PG_STEP")
require.NotEmpty(t, step, "explicit synthetic recovery phase required")
ctx, engine, _ := postgresOperationDB(t, "custodian_recovery")
switch step {
case "prepare":
resetPostgresOperations(t, engine)
_, err := auth.PrepareSourceOperation(ctx, "postgres-process-operation", "postgres-process-case", 0, operationSource())
require.NoError(t, err)
case "crash":
engine.AddHook(operationCrashAfterSourceInsert{})
_, _ = auth.ApplySourceOperation(ctx, "postgres-process-operation", "postgres-process-case")
t.Fatal("actual source insert did not reach the process-death hook")
case "recover-prepared":
r, err := auth.ReconcileSourceOperation(ctx, "postgres-process-operation", "postgres-process-case")
require.NoError(t, err)
require.Equal(t, "prepared", r.Phase)
n, err := engine.Table("login_source").Count()
require.NoError(t, err)
require.Zero(t, n)
_, err = auth.ApplySourceOperation(ctx, "postgres-process-operation", "postgres-process-case")
require.NoError(t, err)
case "recover-applied":
r, err := auth.ReconcileSourceOperation(ctx, "postgres-process-operation", "postgres-process-case")
require.NoError(t, err)
require.Equal(t, "applied", r.Phase)
n, err := engine.Table("login_source").Count()
require.NoError(t, err)
require.EqualValues(t, 1, n)
_, err = auth.InverseSourceOperation(ctx, "postgres-process-operation", "postgres-process-case")
require.NoError(t, err)
case "recover-inverse":
r, err := auth.ReconcileSourceOperation(ctx, "postgres-process-operation", "postgres-process-case")
require.NoError(t, err)
require.Equal(t, "reverted", r.Phase)
n, err := engine.Table("login_source").Count()
require.NoError(t, err)
require.Zero(t, n)
default:
t.Fatal("unknown synthetic recovery phase")
}
}

View file

@ -0,0 +1,314 @@
//go:build source_operation_postgres
package auth_test
import (
"context"
"errors"
"os"
"sync"
"testing"
"time"
auth "forgejo.org/models/auth"
"forgejo.org/models/db"
user_model "forgejo.org/models/user"
"forgejo.org/modules/setting"
oauth2 "forgejo.org/services/auth/source/oauth2"
"github.com/lib/pq"
"github.com/stretchr/testify/require"
"xorm.io/xorm"
)
// The real Forgejo engine/driver, registered model schemas and public operation
// functions run. Only the database, application configuration and actors are
// synthetic. No deployed owner database or authenticated operation is claimed.
func postgresOperationDB(t *testing.T, schema string) (context.Context, *xorm.Engine, *xorm.Engine) {
t.Helper()
require.Equal(t, "/run/source-operation-postgres", os.Getenv("CUSTODIAN_PG_SOCKET"), "explicit isolated socket required")
oldSettings, oldContext := setting.Database, db.DefaultContext
oldEngine, ok := db.GetEngine(oldContext).(*xorm.Engine)
require.True(t, ok)
expectedSchema := schema
if expectedSchema == "" {
expectedSchema = "public"
}
raw, err := xorm.NewEngine("postgres", "host=/run/source-operation-postgres user=custodian_test dbname=custodian_source sslmode=disable search_path="+expectedSchema)
require.NoError(t, err)
_, err = raw.Exec(`CREATE SCHEMA IF NOT EXISTS "` + expectedSchema + `"`)
require.NoError(t, err)
setting.Database.Type = "postgres"
setting.Database.Host = "/run/source-operation-postgres"
setting.Database.Name = "custodian_source"
setting.Database.User = "custodian_test"
setting.Database.Passwd = ""
setting.Database.Schema = schema
setting.Database.SSLMode = "disable"
setting.Database.LogSQL = false
setting.Database.MaxOpenConns, setting.Database.MaxIdleConns = 8, 2
setting.Database.SlowQueryThreshold = 0
require.NoError(t, db.InitEngine(context.Background()))
engine, ok := db.GetEngine(db.DefaultContext).(*xorm.Engine)
require.True(t, ok)
t.Cleanup(func() {
_ = engine.Close()
_ = raw.Close()
setting.Database = oldSettings
db.SetDefaultEngine(oldContext, oldEngine)
})
version, err := engine.Query("SELECT current_setting('server_version_num')::integer / 10000 AS major, current_schema() AS schema")
require.NoError(t, err)
require.Equal(t, "16", string(version[0]["major"]))
require.Equal(t, expectedSchema, string(version[0]["schema"]))
require.NoError(t, db.SyncAllTables())
auth.RegisterTypeConfig(auth.OAuth2, new(oauth2.Source))
return db.DefaultContext, engine, raw
}
func resetPostgresOperations(t *testing.T, engine *xorm.Engine) {
t.Helper()
_, err := engine.Exec(`DROP TRIGGER IF EXISTS custodian_source_rewrite ON login_source`)
require.NoError(t, err)
_, err = engine.Exec(`TRUNCATE login_source_operation, login_source, "user", external_login_user RESTART IDENTITY CASCADE`)
require.NoError(t, err)
}
func TestSourceOperationPostgres(t *testing.T) {
for _, profile := range []struct{ name, schema string }{{"default", ""}, {"public", "public"}, {"named", "custodian_named"}} {
t.Run(profile.name, func(t *testing.T) {
ctx, engine, raw := postgresOperationDB(t, profile.schema)
run := func(name string, f func(*testing.T)) {
t.Run(name, func(t *testing.T) { resetPostgresOperations(t, engine); f(t) })
}
run("create-reconcile-inverse", func(t *testing.T) {
before := operationRows(t, ctx)
_, err := auth.PrepareSourceOperation(ctx, "postgres-create-operation", "postgres-create-case", 0, operationSource())
require.NoError(t, err)
require.Equal(t, before, operationRows(t, ctx))
r, err := auth.ApplySourceOperation(ctx, "postgres-create-operation", "postgres-create-case")
require.NoError(t, err)
require.Equal(t, "applied", r.Phase)
require.Positive(t, r.SourceID)
post := operationRows(t, ctx)
again, err := auth.ApplySourceOperation(ctx, "postgres-create-operation", "postgres-create-case")
require.NoError(t, err)
require.Equal(t, r, again)
require.Equal(t, post, operationRows(t, ctx))
_, err = auth.InverseSourceOperation(ctx, "postgres-create-operation", "postgres-wrong-case")
require.ErrorIs(t, err, auth.ErrSourceOperationConflict)
r, err = auth.ReconcileSourceOperation(ctx, "postgres-create-operation", "postgres-create-case")
require.NoError(t, err)
require.Equal(t, "applied", r.Phase)
r, err = auth.InverseSourceOperation(ctx, "postgres-create-operation", "postgres-create-case")
require.NoError(t, err)
require.Equal(t, "reverted", r.Phase)
require.Equal(t, before, operationRows(t, ctx))
_, err = auth.ApplySourceOperation(ctx, "postgres-create-operation", "postgres-create-case")
require.ErrorIs(t, err, auth.ErrSourceOperationConflict)
})
run("exact-raw-preexisting-restoration", func(t *testing.T) {
s := operationSource()
require.NoError(t, auth.CreateSource(ctx, s))
_, err := engine.Exec(`UPDATE login_source SET cfg = ? WHERE id = ?`, `{"Provider":"openidConnect","ClientID":"synthetic-client","ClientSecret":"synthetic-private-original","FutureGuard":{"x":true}}`, s.ID)
require.NoError(t, err)
before := operationRows(t, ctx)
s.Cfg.(*oauth2.Source).ClientSecret = "synthetic-private-new"
_, err = auth.PrepareSourceOperation(ctx, "postgres-restore-operation", "postgres-restore-case", s.ID, s)
require.NoError(t, err)
_, err = auth.ApplySourceOperation(ctx, "postgres-restore-operation", "postgres-restore-case")
require.NoError(t, err)
_, err = auth.InverseSourceOperation(ctx, "postgres-restore-operation", "postgres-restore-case")
require.NoError(t, err)
require.Equal(t, before, operationRows(t, ctx))
})
run("unchanged-preexisting-survives", func(t *testing.T) {
s := operationSource()
require.NoError(t, auth.CreateSource(ctx, s))
before := operationRows(t, ctx)
_, err := auth.PrepareSourceOperation(ctx, "postgres-unchanged-operation", "postgres-unchanged-case", s.ID, s)
require.NoError(t, err)
r, err := auth.ApplySourceOperation(ctx, "postgres-unchanged-operation", "postgres-unchanged-case")
require.NoError(t, err)
require.Equal(t, "unchanged", r.Phase)
_, err = auth.InverseSourceOperation(ctx, "postgres-unchanged-operation", "postgres-unchanged-case")
require.NoError(t, err)
require.Equal(t, before, operationRows(t, ctx))
})
for _, stage := range []string{"before-apply", "before-inverse"} {
run("private-drift-"+stage, func(t *testing.T) {
s := operationSource()
require.NoError(t, auth.CreateSource(ctx, s))
_, err := auth.PrepareSourceOperation(ctx, "postgres-drift-operation", "postgres-drift-case", s.ID, s)
require.NoError(t, err)
if stage == "before-inverse" {
_, err = auth.ApplySourceOperation(ctx, "postgres-drift-operation", "postgres-drift-case")
require.NoError(t, err)
}
_, err = engine.Exec(`UPDATE login_source SET cfg = cfg || ' ' WHERE id = ?`, s.ID)
require.NoError(t, err)
before := operationRows(t, ctx)
if stage == "before-apply" {
_, err = auth.ApplySourceOperation(ctx, "postgres-drift-operation", "postgres-drift-case")
} else {
_, err = auth.InverseSourceOperation(ctx, "postgres-drift-operation", "postgres-drift-case")
}
require.ErrorIs(t, err, auth.ErrSourceOperationConflict)
require.Equal(t, before, operationRows(t, ctx))
})
}
for _, kind := range []string{"user", "external"} {
run("linked-"+kind+"-refuses-deletion", func(t *testing.T) {
_, err := auth.PrepareSourceOperation(ctx, "postgres-linked-operation", "postgres-linked-case", 0, operationSource())
require.NoError(t, err)
r, err := auth.ApplySourceOperation(ctx, "postgres-linked-operation", "postgres-linked-case")
require.NoError(t, err)
if kind == "user" {
_, err = engine.Insert(&user_model.User{ID: 1, LowerName: "synthetic", Name: "synthetic", Email: "synthetic@invalid.test", LoginSource: r.SourceID})
} else {
_, err = engine.Exec(`INSERT INTO external_login_user (external_id, user_id, login_source_id) VALUES ('synthetic-external', 1, ?)`, r.SourceID)
}
require.NoError(t, err)
before := operationRows(t, ctx)
_, err = auth.InverseSourceOperation(ctx, "postgres-linked-operation", "postgres-linked-case")
require.True(t, auth.IsErrSourceInUse(err))
require.Equal(t, before, operationRows(t, ctx))
var count int64
if kind == "user" {
count, err = engine.Table("user").Where("login_source = ?", r.SourceID).Count()
} else {
count, err = engine.Table("external_login_user").Where("login_source_id = ?", r.SourceID).Count()
}
require.NoError(t, err)
require.EqualValues(t, 1, count)
})
}
run("unexpected-trigger-post-state-rolls-back", func(t *testing.T) {
before := operationRows(t, ctx)
_, err := auth.PrepareSourceOperation(ctx, "postgres-trigger-operation", "postgres-trigger-case", 0, operationSource())
require.NoError(t, err)
_, err = engine.Exec(`CREATE OR REPLACE FUNCTION custodian_rewrite_source() RETURNS trigger LANGUAGE plpgsql AS $$ BEGIN NEW.name := 'unexpected-rewrite'; RETURN NEW; END $$`)
require.NoError(t, err)
_, err = engine.Exec(`CREATE TRIGGER custodian_source_rewrite BEFORE INSERT ON login_source FOR EACH ROW EXECUTE FUNCTION custodian_rewrite_source()`)
require.NoError(t, err)
_, err = auth.ApplySourceOperation(ctx, "postgres-trigger-operation", "postgres-trigger-case")
require.ErrorIs(t, err, auth.ErrSourceOperationConflict)
require.Equal(t, before, operationRows(t, ctx))
r, err := auth.ReconcileSourceOperation(ctx, "postgres-trigger-operation", "postgres-trigger-case")
require.NoError(t, err)
require.Equal(t, "prepared", r.Phase)
})
run("uncooperative-writers-excluded", func(t *testing.T) {
locked, release, done := make(chan struct{}), make(chan struct{}), make(chan error, 1)
var once sync.Once
releaseLock := func() { once.Do(func() { close(release) }) }
defer releaseLock()
go func() {
done <- auth.SourceOperationPostgresTransactionForTest(ctx, func(context.Context) error { close(locked); <-release; return nil })
}()
select {
case <-locked:
case err := <-done:
t.Fatalf("lock acquisition refused: %v", err)
case <-time.After(5 * time.Second):
t.Fatal("lock acquisition timed out")
}
statements := []string{`UPDATE login_source_operation SET phase=phase WHERE operation_id='absent'`, `UPDATE login_source SET name=name WHERE id=-1`, `UPDATE "user" SET login_source=login_source WHERE id=-1`, `UPDATE external_login_user SET login_source_id=login_source_id WHERE user_id=-1`}
for _, statement := range statements {
session := raw.NewSession()
require.NoError(t, session.Begin())
_, err := session.Exec(`SET LOCAL lock_timeout='150ms'`)
require.NoError(t, err)
_, err = session.Exec(statement)
var pgerr *pq.Error
blocked := errors.As(err, &pgerr) && pgerr.Code == "55P03"
_ = session.Rollback()
_ = session.Close()
require.True(t, blocked, "an uncooperative writer escaped the actual table lock")
}
releaseLock()
select {
case err := <-done:
require.NoError(t, err)
case <-time.After(5 * time.Second):
t.Fatal("transaction did not finish")
}
for _, statement := range statements {
_, err := raw.Exec(statement)
require.NoError(t, err)
}
})
run("concurrent-preparation-has-one-owner", func(t *testing.T) {
start, done := make(chan struct{}), make(chan error, 2)
for _, id := range []string{"postgres-concurrent-first", "postgres-concurrent-second"} {
go func(id string) {
<-start
_, err := auth.PrepareSourceOperation(ctx, id, "postgres-concurrent-case", 0, operationSource())
done <- err
}(id)
}
close(start)
ok, conflict := 0, 0
for range 2 {
select {
case err := <-done:
if err == nil {
ok++
} else if errors.Is(err, auth.ErrSourceOperationConflict) {
conflict++
} else {
t.Fatal("unexpected concurrent preparation error")
}
case <-time.After(5 * time.Second):
t.Fatal("concurrent preparation timed out")
}
}
require.Equal(t, 1, ok)
require.Equal(t, 1, conflict)
})
})
}
}
func TestSourceOperationPostgresProcessRecovery(t *testing.T) {
step := os.Getenv("CUSTODIAN_PG_STEP")
require.NotEmpty(t, step, "explicit synthetic recovery phase required")
ctx, engine, _ := postgresOperationDB(t, "custodian_recovery")
switch step {
case "prepare":
resetPostgresOperations(t, engine)
_, err := auth.PrepareSourceOperation(ctx, "postgres-process-operation", "postgres-process-case", 0, operationSource())
require.NoError(t, err)
case "crash":
engine.AddHook(operationCrashAfterSourceInsert{})
_, _ = auth.ApplySourceOperation(ctx, "postgres-process-operation", "postgres-process-case")
t.Fatal("actual source insert did not reach the process-death hook")
case "recover-prepared":
r, err := auth.ReconcileSourceOperation(ctx, "postgres-process-operation", "postgres-process-case")
require.NoError(t, err)
require.Equal(t, "prepared", r.Phase)
n, err := engine.Table("login_source").Count()
require.NoError(t, err)
require.Zero(t, n)
_, err = auth.ApplySourceOperation(ctx, "postgres-process-operation", "postgres-process-case")
require.NoError(t, err)
case "recover-applied":
r, err := auth.ReconcileSourceOperation(ctx, "postgres-process-operation", "postgres-process-case")
require.NoError(t, err)
require.Equal(t, "applied", r.Phase)
n, err := engine.Table("login_source").Count()
require.NoError(t, err)
require.EqualValues(t, 1, n)
_, err = auth.InverseSourceOperation(ctx, "postgres-process-operation", "postgres-process-case")
require.NoError(t, err)
case "recover-inverse":
r, err := auth.ReconcileSourceOperation(ctx, "postgres-process-operation", "postgres-process-case")
require.NoError(t, err)
require.Equal(t, "reverted", r.Phase)
n, err := engine.Table("login_source").Count()
require.NoError(t, err)
require.Zero(t, n)
default:
t.Fatal("unknown synthetic recovery phase")
}
}

View file

@ -0,0 +1,53 @@
package db
import (
"bytes"
"context"
"runtime/trace"
"testing"
"xorm.io/xorm"
"xorm.io/xorm/contexts"
)
type followingQueryHook struct{}
func (followingQueryHook) BeforeProcess(c *contexts.ContextHook) (context.Context, error) {
return c.Ctx, nil
}
func (followingQueryHook) AfterProcess(*contexts.ContextHook) error { return nil }
func TestTracingContextSurvivesFollowingHooks(t *testing.T) {
for _, sensitive := range []bool{false, true} {
for _, fail := range []bool{false, true} {
engine, err := xorm.NewEngine("sqlite3", ":memory:")
if err != nil {
t.Fatal(err)
}
engine.AddHook(TracingHook{}, followingQueryHook{})
ctx := context.Background()
if sensitive {
ctx = WithSensitiveSQL(ctx)
}
var output bytes.Buffer
if err := trace.Start(&output); err != nil {
t.Fatal(err)
}
func() {
defer trace.Stop()
query := "SELECT ?"
if fail {
query = "SELECT missing_synthetic_function(?)"
}
_, err = engine.Context(ctx).Exec(query, "synthetic-following-hook-sentinel")
}()
_ = engine.Close()
if (err != nil) != fail {
t.Fatal("unexpected real SQLite query outcome")
}
if bytes.Contains(output.Bytes(), []byte("synthetic-following-hook-sentinel")) == sensitive {
t.Fatal("following hook changed private or ordinary trace disclosure")
}
}
}
}

View file

@ -0,0 +1,8 @@
{
"image_id": "sha256:57c72fd2a128e416c7fcc499958864df5301e940bca0a56f58fddf30ffc07777",
"repo_digests": [
"postgres@sha256:57c72fd2a128e416c7fcc499958864df5301e940bca0a56f58fddf30ffc07777"
],
"selector": "existing local postgres:16-alpine",
"target_major": "PostgreSQL 16 in current Forgejo database source"
}

View file

@ -0,0 +1,57 @@
{
"argv": [
"bwrap",
"--unshare-net",
"--unshare-pid",
"--proc",
"/proc",
"--dev",
"/dev",
"--tmpfs",
"/tmp",
"--dir",
"/app",
"--ro-bind",
"/tmp/custodian-forgejo-release-r4/source/gitea",
"/app/forgejo",
"--bind",
"/tmp/custodian-forgejo-release-r4/embedded-extracted",
"/results",
"--chdir",
"/tmp",
"--clearenv",
"--setenv",
"PATH",
"/nonexistent",
"--setenv",
"HOME",
"/tmp/home",
"--setenv",
"USER",
"builder",
"--setenv",
"USERNAME",
"builder",
"--setenv",
"GITEA_WORK_DIR",
"/tmp/work",
"--setenv",
"GITEA_CUSTOM",
"/tmp/custom",
"--setenv",
"GITEA_APP_INI",
"/tmp/absent-app.ini",
"--setenv",
"TZ",
"UTC",
"--setenv",
"LC_ALL",
"C",
"--",
"/app/forgejo",
"--version"
],
"phase": "binary-version",
"returncode": 0,
"seconds": 0.16
}

View file

@ -0,0 +1,7 @@
{
"binary_sha256": "92efb26614d3fca22c400920d92c4cd022e32ab86c1f562f60699ab5f750cd28",
"frontend_built": true,
"image_deployment_selected": false,
"source_locks_preserved": true,
"tags": "bindata timetzdata sqlite sqlite_unlock_notify"
}

View file

@ -0,0 +1,708 @@
[
{
"operation": [
"migrate"
],
"returncode": 0,
"stdout_stderr_secret_absent": true
},
{
"operation": [
"admin",
"auth",
"add-oauth",
"--name",
"refused-debug-logging",
"--provider",
"github",
"--secret-file",
"/run/forgejo-oidc/CLIENT_SECRET"
],
"returncode": 1,
"stdout_stderr_secret_absent": true
},
{
"operation": [
"admin",
"auth",
"add-oauth",
"--name",
"synthetic-oauth",
"--provider",
"github",
"--key",
"synthetic-public-id",
"--secret-file",
"/run/forgejo-oidc/CLIENT_SECRET",
"--group-claim-name",
"groups",
"--admin-group",
"unchanged-admin",
"--scopes",
"read:user,user:email"
],
"returncode": 0,
"stdout_stderr_secret_absent": true
},
{
"operation": [
"admin",
"auth",
"update-oauth",
"--id",
"1",
"--icon-url",
"https://synthetic.invalid/icon"
],
"returncode": 0,
"stdout_stderr_secret_absent": true
},
{
"operation": [
"admin",
"auth",
"update-oauth",
"--id",
"1",
"--secret-file",
"/run/forgejo-oidc/replacement"
],
"returncode": 0,
"stdout_stderr_secret_absent": true
},
{
"operation": [
"admin",
"auth",
"update-oauth",
"--id",
"1",
"--name",
"synthetic-guarded"
],
"returncode": 0,
"stdout_stderr_secret_absent": true
},
{
"operation": [
"admin",
"auth",
"update-oauth",
"--id",
"1",
"--secret-file",
"/run/forgejo-oidc/good"
],
"returncode": 0,
"stdout_stderr_secret_absent": true
},
{
"operation": [
"admin",
"auth",
"add-oauth",
"--name",
"refused",
"--provider",
"github",
"--secret-file",
"/run/forgejo-oidc/newline"
],
"returncode": 1,
"stdout_stderr_secret_absent": true
},
{
"operation": [
"admin",
"auth",
"update-oauth",
"--id",
"1",
"--name",
"refused",
"--secret-file",
"/run/forgejo-oidc/newline"
],
"returncode": 1,
"stdout_stderr_secret_absent": true
},
{
"operation": [
"admin",
"auth",
"add-oauth",
"--name",
"refused",
"--provider",
"github",
"--secret-file",
"/run/forgejo-oidc/short"
],
"returncode": 1,
"stdout_stderr_secret_absent": true
},
{
"operation": [
"admin",
"auth",
"update-oauth",
"--id",
"1",
"--name",
"refused",
"--secret-file",
"/run/forgejo-oidc/short"
],
"returncode": 1,
"stdout_stderr_secret_absent": true
},
{
"operation": [
"admin",
"auth",
"add-oauth",
"--name",
"refused",
"--provider",
"github",
"--secret-file",
"/run/forgejo-oidc/long"
],
"returncode": 1,
"stdout_stderr_secret_absent": true
},
{
"operation": [
"admin",
"auth",
"update-oauth",
"--id",
"1",
"--name",
"refused",
"--secret-file",
"/run/forgejo-oidc/long"
],
"returncode": 1,
"stdout_stderr_secret_absent": true
},
{
"operation": [
"admin",
"auth",
"add-oauth",
"--name",
"refused",
"--provider",
"github",
"--secret-file",
"/run/forgejo-oidc/badbyte"
],
"returncode": 1,
"stdout_stderr_secret_absent": true
},
{
"operation": [
"admin",
"auth",
"update-oauth",
"--id",
"1",
"--name",
"refused",
"--secret-file",
"/run/forgejo-oidc/badbyte"
],
"returncode": 1,
"stdout_stderr_secret_absent": true
},
{
"operation": [
"admin",
"auth",
"add-oauth",
"--name",
"refused",
"--provider",
"github",
"--secret-file",
"/run/forgejo-oidc/world"
],
"returncode": 1,
"stdout_stderr_secret_absent": true
},
{
"operation": [
"admin",
"auth",
"update-oauth",
"--id",
"1",
"--name",
"refused",
"--secret-file",
"/run/forgejo-oidc/world"
],
"returncode": 1,
"stdout_stderr_secret_absent": true
},
{
"operation": [
"admin",
"auth",
"add-oauth",
"--name",
"refused",
"--provider",
"github",
"--secret-file",
"/run/forgejo-oidc/writable"
],
"returncode": 1,
"stdout_stderr_secret_absent": true
},
{
"operation": [
"admin",
"auth",
"update-oauth",
"--id",
"1",
"--name",
"refused",
"--secret-file",
"/run/forgejo-oidc/writable"
],
"returncode": 1,
"stdout_stderr_secret_absent": true
},
{
"operation": [
"admin",
"auth",
"add-oauth",
"--name",
"refused",
"--provider",
"github",
"--secret-file",
"/run/forgejo-oidc/executable"
],
"returncode": 1,
"stdout_stderr_secret_absent": true
},
{
"operation": [
"admin",
"auth",
"update-oauth",
"--id",
"1",
"--name",
"refused",
"--secret-file",
"/run/forgejo-oidc/executable"
],
"returncode": 1,
"stdout_stderr_secret_absent": true
},
{
"operation": [
"admin",
"auth",
"add-oauth",
"--name",
"refused",
"--provider",
"github",
"--secret-file",
"/run/forgejo-oidc/empty"
],
"returncode": 1,
"stdout_stderr_secret_absent": true
},
{
"operation": [
"admin",
"auth",
"update-oauth",
"--id",
"1",
"--name",
"refused",
"--secret-file",
"/run/forgejo-oidc/empty"
],
"returncode": 1,
"stdout_stderr_secret_absent": true
},
{
"operation": [
"admin",
"auth",
"add-oauth",
"--name",
"refused",
"--provider",
"github",
"--secret-file",
"/run/forgejo-oidc/symlink"
],
"returncode": 1,
"stdout_stderr_secret_absent": true
},
{
"operation": [
"admin",
"auth",
"update-oauth",
"--id",
"1",
"--name",
"refused",
"--secret-file",
"/run/forgejo-oidc/symlink"
],
"returncode": 1,
"stdout_stderr_secret_absent": true
},
{
"operation": [
"admin",
"auth",
"add-oauth",
"--name",
"refused",
"--provider",
"github",
"--secret-file",
"/run/forgejo-oidc/fifo"
],
"returncode": 1,
"stdout_stderr_secret_absent": true
},
{
"operation": [
"admin",
"auth",
"update-oauth",
"--id",
"1",
"--name",
"refused",
"--secret-file",
"/run/forgejo-oidc/fifo"
],
"returncode": 1,
"stdout_stderr_secret_absent": true
},
{
"operation": [
"admin",
"auth",
"add-oauth",
"--name",
"refused",
"--provider",
"github",
"--secret-file",
"/run/forgejo-oidc/directory"
],
"returncode": 1,
"stdout_stderr_secret_absent": true
},
{
"operation": [
"admin",
"auth",
"update-oauth",
"--id",
"1",
"--name",
"refused",
"--secret-file",
"/run/forgejo-oidc/directory"
],
"returncode": 1,
"stdout_stderr_secret_absent": true
},
{
"operation": [
"admin",
"auth",
"add-oauth",
"--name",
"refused",
"--provider",
"github",
"--secret-file",
"/run/forgejo-oidc/missing"
],
"returncode": 1,
"stdout_stderr_secret_absent": true
},
{
"operation": [
"admin",
"auth",
"update-oauth",
"--id",
"1",
"--name",
"refused",
"--secret-file",
"/run/forgejo-oidc/missing"
],
"returncode": 1,
"stdout_stderr_secret_absent": true
},
{
"operation": [
"admin",
"auth",
"add-oauth",
"--name",
"refused",
"--provider",
"github",
"--secret-file",
"/run/forgejo-oidc/badparent/value"
],
"returncode": 1,
"stdout_stderr_secret_absent": true
},
{
"operation": [
"admin",
"auth",
"update-oauth",
"--id",
"1",
"--name",
"refused",
"--secret-file",
"/run/forgejo-oidc/badparent/value"
],
"returncode": 1,
"stdout_stderr_secret_absent": true
},
{
"operation": [
"admin",
"auth",
"add-oauth",
"--name",
"refused",
"--provider",
"github",
"--secret-file",
"/run/forgejo-oidc/parentlink/value"
],
"returncode": 1,
"stdout_stderr_secret_absent": true
},
{
"operation": [
"admin",
"auth",
"update-oauth",
"--id",
"1",
"--name",
"refused",
"--secret-file",
"/run/forgejo-oidc/parentlink/value"
],
"returncode": 1,
"stdout_stderr_secret_absent": true
},
{
"operation": [
"admin",
"auth",
"add-oauth",
"--name",
"refused",
"--provider",
"github",
"--secret-file",
"relative"
],
"returncode": 1,
"stdout_stderr_secret_absent": true
},
{
"operation": [
"admin",
"auth",
"update-oauth",
"--id",
"1",
"--name",
"refused",
"--secret-file",
"relative"
],
"returncode": 1,
"stdout_stderr_secret_absent": true
},
{
"operation": [
"admin",
"auth",
"add-oauth",
"--name",
"refused",
"--provider",
"github",
"--secret-file",
""
],
"returncode": 1,
"stdout_stderr_secret_absent": true
},
{
"operation": [
"admin",
"auth",
"update-oauth",
"--id",
"1",
"--name",
"refused",
"--secret-file",
""
],
"returncode": 1,
"stdout_stderr_secret_absent": true
},
{
"operation": [
"admin",
"auth",
"add-oauth",
"--name",
"refused",
"--provider",
"github",
"--secret-file",
"/run/forgejo-oidc/../forgejo-oidc/good"
],
"returncode": 1,
"stdout_stderr_secret_absent": true
},
{
"operation": [
"admin",
"auth",
"update-oauth",
"--id",
"1",
"--name",
"refused",
"--secret-file",
"/run/forgejo-oidc/../forgejo-oidc/good"
],
"returncode": 1,
"stdout_stderr_secret_absent": true
},
{
"operation": [
"admin",
"auth",
"add-oauth",
"--name",
"refused",
"--provider",
"github",
"--secret-file",
"/run/writable-input/good"
],
"returncode": 1,
"stdout_stderr_secret_absent": true
},
{
"operation": [
"admin",
"auth",
"update-oauth",
"--id",
"1",
"--name",
"refused",
"--secret-file",
"/run/writable-input/good"
],
"returncode": 1,
"stdout_stderr_secret_absent": true
},
{
"operation": [
"admin",
"auth",
"add-oauth",
"--name",
"refused",
"--secret",
"",
"--secret-file",
"/run/forgejo-oidc/good"
],
"returncode": 1,
"stdout_stderr_secret_absent": true
},
{
"operation": [
"admin",
"auth",
"update-oauth",
"--id",
"1",
"--secret",
"",
"--secret-file",
"/run/forgejo-oidc/good"
],
"returncode": 1,
"stdout_stderr_secret_absent": true
},
{
"operation": [
"admin",
"auth",
"update-oauth",
"--id",
"1",
"--required-claim-values",
""
],
"returncode": 1,
"stdout_stderr_secret_absent": true
},
{
"operation": [
"admin",
"auth",
"update-oauth",
"--id",
"1",
"--secret-file",
"/run/forgejo-oidc/replacement"
],
"returncode": 1,
"stdout_stderr_secret_absent": true
},
{
"operation": [
"admin",
"auth",
"update-oauth",
"--id",
"1",
"--secret",
"synthetic-legacy-literal"
],
"returncode": 0,
"stdout_stderr_secret_absent": true
}
]

View file

@ -0,0 +1,13 @@
{
"passed": true,
"subprocesses": 48,
"real_backend_cli_and_sqlite": true,
"network": "disabled by bwrap",
"secret_inputs": "synthetic only",
"private_file_values_never_in_argv_env_output": true,
"actual_browser_login": false,
"actual_readonly_file_bind": true,
"replacement_preserves_other_config": true,
"unsafe_SQL_logging_refused": true,
"actual_error_and_slow_hooks_no_leak": true
}

View file

@ -0,0 +1,24 @@
{
"argv": [
"docker",
"buildx",
"build",
"--output",
"type=oci,dest=/tmp/custodian-forgejo-release-r4/image.oci.tar,rewrite-timestamp=true",
"--no-cache",
"--platform",
"linux/amd64",
"--pull=false",
"--network=none",
"--provenance=false",
"--sbom=false",
"--metadata-file",
"/tmp/custodian-forgejo-release-r4/image-build-metadata.json",
"--build-arg",
"SOURCE_DATE_EPOCH=1752120742",
"/tmp/custodian-forgejo-release-r4/container-context"
],
"phase": "container-build",
"returncode": 0,
"seconds": 26.78
}

View file

@ -0,0 +1,40 @@
#0 building with "default" instance using docker driver
#1 [internal] load build definition from Dockerfile
#1 transferring dockerfile: 465B done
#1 DONE 0.0s
#2 [internal] load metadata for code.forgejo.org/forgejo/forgejo@sha256:41649dff5311664097d29b4d80620403f0b27e7c0eee0b8af79b132a37f3807b
#2 DONE 0.4s
#3 [internal] load .dockerignore
#3 transferring context: 2B done
#3 DONE 0.0s
#4 [internal] load build context
#4 ...
#5 [1/2] FROM code.forgejo.org/forgejo/forgejo@sha256:41649dff5311664097d29b4d80620403f0b27e7c0eee0b8af79b132a37f3807b
#5 resolve code.forgejo.org/forgejo/forgejo@sha256:41649dff5311664097d29b4d80620403f0b27e7c0eee0b8af79b132a37f3807b 0.1s done
#5 CACHED
#4 [internal] load build context
#4 transferring context: 111.05MB 1.4s done
#4 DONE 1.4s
#6 [2/2] COPY --chown=0:0 --chmod=755 gitea /app/gitea/gitea
#6 DONE 0.4s
#7 exporting to oci image format
#7 exporting layers
#7 exporting layers 11.2s done
#7 rewriting layers with source-date-epoch 1752120742 (2025-07-10 04:12:22 +0000 UTC)
#7 rewriting layers with source-date-epoch 1752120742 (2025-07-10 04:12:22 +0000 UTC) 6.9s done
#7 exporting manifest sha256:9d127b0a75d3d53b1598e7f380dce29f23f42c2e69056fdfc9a42122d98c41c7 0.0s done
#7 exporting config sha256:864ee9249f5e00b5e047f125a640f666ba132f92bd5fbed1084a51b6a644b76b 0.0s done
#7 sending tarball
#7 sending tarball 5.7s done
#7 DONE 23.9s
#8 resolving provenance for metadata file
#8 DONE 0.0s

View file

@ -0,0 +1,13 @@
{
"two_fresh_no_cache_OCI_exports_exact": true,
"compared_fields": {
"image_manifest_digest": "sha256:9d127b0a75d3d53b1598e7f380dce29f23f42c2e69056fdfc9a42122d98c41c7",
"config_digest": "sha256:864ee9249f5e00b5e047f125a640f666ba132f92bd5fbed1084a51b6a644b76b",
"oci_index_sha256": "0f283c23a4c7fb461a4f7a745e8bfd95f8def8e67772bbbae43b781e61e92ed7",
"archive_sha256": "499ef48172540b07f01de62e0c78f5798fe2793cac73d0c6188b37c07077e7d0"
},
"same_verified_binary": true,
"second_source_build_claimed": false,
"registry_publication": false,
"native_admission": false
}

View file

@ -0,0 +1,17 @@
{
"all_base_layers_and_rootless_runtime_config_preserved": true,
"all_oci_blob_digests_verified": true,
"archive_sha256": "499ef48172540b07f01de62e0c78f5798fe2793cac73d0c6188b37c07077e7d0",
"artifact_path": "/tmp/custodian-forgejo-release-r4/image.oci.tar",
"config_digest": "sha256:864ee9249f5e00b5e047f125a640f666ba132f92bd5fbed1084a51b6a644b76b",
"container_epoch": 1752120742,
"deployment_tag": null,
"final_layer_binary_exact": true,
"host_or_secret_mounts": false,
"image_manifest_digest": "sha256:9d127b0a75d3d53b1598e7f380dce29f23f42c2e69056fdfc9a42122d98c41c7",
"local_runtime_image_loaded": false,
"oci_index_sha256": "0f283c23a4c7fb461a4f7a745e8bfd95f8def8e67772bbbae43b781e61e92ed7",
"privileged_containers": false,
"registry_publication": false,
"source_epoch": 1752105237
}

View file

@ -0,0 +1,16 @@
{
"argv": [
"make",
"GOFLAGS=-trimpath -buildvcs=false -p=4",
"RELEASE_VERSION=11.0.3+cust80.feb10793",
"FORGEJO_VERSION=11.0.3+cust80.feb10793",
"FORGEJO_VERSION_API=11.0.3+cust80.feb10793",
"TAGS=bindata timetzdata sqlite sqlite_unlock_notify",
"go-check",
"generate-backend",
"static-executable"
],
"phase": "embedded-and-static-backend",
"returncode": 0,
"seconds": 60.14
}

View file

@ -0,0 +1,9 @@
Running go generate...
generating bindata for migration
generating bindata for options
generating bindata for public
generating bindata for templates
CGO_CFLAGS="-O2 -g -DSQLITE_MAX_VARIABLE_NUMBER=32766" /tmp/custodian-forgejo-release-r4/go/bin/go build -trimpath -buildvcs=false -p=4 -tags 'netgo osusergo bindata timetzdata sqlite sqlite_unlock_notify' -ldflags '-linkmode external -extldflags "-static" -s -w -X "main.ReleaseVersion=11.0.3+cust80.feb10793" -X "main.MakeVersion=GNU Make 4.3" -X "main.Version=11.0.3+cust80.feb10793" -X "main.Tags=bindata timetzdata sqlite sqlite_unlock_notify" -X "main.ForgejoVersion=11.0.3+cust80.feb10793"' -o gitea
# forgejo.org
/usr/bin/ld: /tmp/go-link-3904455077/000012.o: in function `unixDlOpen':
/_/github.com/mattn/go-sqlite3@v1.14.28/sqlite3-binding.c:45328:(.text+0x7a2d): warning: Using 'dlopen' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking

View file

@ -0,0 +1,62 @@
{
"argv": [
"bwrap",
"--unshare-net",
"--unshare-pid",
"--proc",
"/proc",
"--dev",
"/dev",
"--tmpfs",
"/tmp",
"--dir",
"/app",
"--ro-bind",
"/tmp/custodian-forgejo-release-r4/source/gitea",
"/app/forgejo",
"--bind",
"/tmp/custodian-forgejo-release-r4/embedded-extracted",
"/results",
"--chdir",
"/tmp",
"--clearenv",
"--setenv",
"PATH",
"/nonexistent",
"--setenv",
"HOME",
"/tmp/home",
"--setenv",
"USER",
"builder",
"--setenv",
"USERNAME",
"builder",
"--setenv",
"GITEA_WORK_DIR",
"/tmp/work",
"--setenv",
"GITEA_CUSTOM",
"/tmp/custom",
"--setenv",
"GITEA_APP_INI",
"/tmp/absent-app.ini",
"--setenv",
"TZ",
"UTC",
"--setenv",
"LC_ALL",
"C",
"--",
"/app/forgejo",
"embedded",
"extract",
"--include-vendored",
"--destination",
"/results",
"**"
],
"phase": "embedded-extract",
"returncode": 0,
"seconds": 0.79
}

View file

@ -0,0 +1,11 @@
{
"scope": "Public generated/embedded asset SHA-256 identifiers only",
"assets_verified_against_both_actual_source_and_extracted_binary": 2234,
"runtime_original_manifest_sha256": "sha256:74a0ec278ab99ac86ee434d7620229dc4a70146efd51876a1e4738d2c9f4ffdb",
"published_manifest_sha256": "sha256:ca09d0b2ed436ad6d3473da35d0d1081bdd8c3311825f4684993b33e6b426736",
"original_byte_exact_reconstructed": true,
"reconstruction": "Remove the sha256: value prefix and serialize with json.dumps(indent=2, sort_keys=True) plus one newline.",
"runtime_verification_receipt_preserved": true,
"scanner_rules_or_allowlists_changed": false,
"credential_values_transformed": false
}

View file

@ -0,0 +1,13 @@
{
"argv": [
"make",
"GOFLAGS=-trimpath -buildvcs=false -p=4",
"RELEASE_VERSION=11.0.3+cust80.feb10793",
"FORGEJO_VERSION=11.0.3+cust80.feb10793",
"FORGEJO_VERSION_API=11.0.3+cust80.feb10793",
"frontend"
],
"phase": "frontend",
"returncode": 0,
"seconds": 83.5
}

View file

@ -0,0 +1,55 @@
{
"buildx.build.provenance": {
"builder": {
"id": ""
},
"buildType": "https://mobyproject.org/buildkit@v1",
"materials": [
{
"uri": "pkg:docker/code.forgejo.org/forgejo/forgejo?digest=sha256:41649dff5311664097d29b4d80620403f0b27e7c0eee0b8af79b132a37f3807b\u0026platform=linux%2Famd64",
"digest": {
"sha256": "41649dff5311664097d29b4d80620403f0b27e7c0eee0b8af79b132a37f3807b"
}
}
],
"invocation": {
"configSource": {
"entryPoint": "Dockerfile"
},
"parameters": {
"frontend": "dockerfile.v0",
"args": {
"build-arg:SOURCE_DATE_EPOCH": "1752120742",
"force-network-mode": "none",
"no-cache": ""
},
"locals": [
{
"name": "context"
},
{
"name": "dockerfile"
}
]
},
"environment": {
"platform": "linux/amd64"
}
}
},
"buildx.build.ref": "default/default/slt9p94vejq7ji1ub5j63htim",
"containerimage.config.digest": "sha256:864ee9249f5e00b5e047f125a640f666ba132f92bd5fbed1084a51b6a644b76b",
"containerimage.descriptor": {
"mediaType": "application/vnd.oci.image.manifest.v1+json",
"digest": "sha256:9d127b0a75d3d53b1598e7f380dce29f23f42c2e69056fdfc9a42122d98c41c7",
"size": 2841,
"annotations": {
"org.opencontainers.image.created": "2025-07-10T04:12:22Z"
},
"platform": {
"architecture": "amd64",
"os": "linux"
}
},
"containerimage.digest": "sha256:9d127b0a75d3d53b1598e7f380dce29f23f42c2e69056fdfc9a42122d98c41c7"
}

View file

@ -0,0 +1,60 @@
{
"argv": [
"bwrap",
"--unshare-net",
"--unshare-pid",
"--proc",
"/proc",
"--dev",
"/dev",
"--tmpfs",
"/tmp",
"--dir",
"/app",
"--ro-bind",
"/tmp/custodian-forgejo-release-r4/source/gitea",
"/app/forgejo",
"--bind",
"/tmp/custodian-forgejo-release-r4/embedded-extracted",
"/results",
"--chdir",
"/tmp",
"--clearenv",
"--setenv",
"PATH",
"/nonexistent",
"--setenv",
"HOME",
"/tmp/home",
"--setenv",
"USER",
"builder",
"--setenv",
"USERNAME",
"builder",
"--setenv",
"GITEA_WORK_DIR",
"/tmp/work",
"--setenv",
"GITEA_CUSTOM",
"/tmp/custom",
"--setenv",
"GITEA_APP_INI",
"/tmp/absent-app.ini",
"--setenv",
"TZ",
"UTC",
"--setenv",
"LC_ALL",
"C",
"--",
"/app/forgejo",
"admin",
"auth",
"add-oauth",
"--help"
],
"phase": "new-cli-help",
"returncode": 0,
"seconds": 0.13
}

View file

@ -0,0 +1,13 @@
{
"argv": [
"npm",
"ci",
"--offline",
"--ignore-scripts",
"--no-audit",
"--no-fund"
],
"phase": "npm-offline-ci",
"returncode": 0,
"seconds": 32.83
}

View file

@ -0,0 +1,5 @@
{
"lock_sha256": "5a4d0e5126b6b9dd66fe2828ff78bfe6ac0cadc34b96ca739225d622b963b768",
"module_cache": "/tmp/custodian-forgejo-successor-attempt2/modules",
"public_archives_verified": true
}

View file

@ -0,0 +1,24 @@
{
"argv": [
"docker",
"buildx",
"build",
"--output",
"type=oci,dest=/tmp/custodian-forgejo-release-r4-oci-replay/image.oci.tar,rewrite-timestamp=true",
"--no-cache",
"--platform",
"linux/amd64",
"--pull=false",
"--network=none",
"--provenance=false",
"--sbom=false",
"--metadata-file",
"/tmp/custodian-forgejo-release-r4-oci-replay/image-build-metadata.json",
"--build-arg",
"SOURCE_DATE_EPOCH=1752120742",
"/tmp/custodian-forgejo-release-r4-oci-replay/container-context"
],
"phase": "container-build",
"returncode": 0,
"seconds": 24.94
}

View file

@ -0,0 +1,38 @@
#0 building with "default" instance using docker driver
#1 [internal] load build definition from Dockerfile
#1 transferring dockerfile: 465B done
#1 DONE 0.0s
#2 [internal] load metadata for code.forgejo.org/forgejo/forgejo@sha256:41649dff5311664097d29b4d80620403f0b27e7c0eee0b8af79b132a37f3807b
#2 DONE 0.0s
#3 [internal] load .dockerignore
#3 transferring context:
#3 transferring context: 2B done
#3 DONE 0.0s
#4 [1/2] FROM code.forgejo.org/forgejo/forgejo@sha256:41649dff5311664097d29b4d80620403f0b27e7c0eee0b8af79b132a37f3807b
#4 resolve code.forgejo.org/forgejo/forgejo@sha256:41649dff5311664097d29b4d80620403f0b27e7c0eee0b8af79b132a37f3807b 0.0s done
#4 CACHED
#5 [internal] load build context
#5 transferring context: 111.05MB 1.6s done
#5 DONE 1.6s
#6 [2/2] COPY --chown=0:0 --chmod=755 gitea /app/gitea/gitea
#6 DONE 0.6s
#7 exporting to oci image format
#7 exporting layers
#7 exporting layers 8.3s done
#7 rewriting layers with source-date-epoch 1752120742 (2025-07-10 04:12:22 +0000 UTC)
#7 rewriting layers with source-date-epoch 1752120742 (2025-07-10 04:12:22 +0000 UTC) 7.5s done
#7 exporting manifest sha256:9d127b0a75d3d53b1598e7f380dce29f23f42c2e69056fdfc9a42122d98c41c7 done
#7 exporting config sha256:864ee9249f5e00b5e047f125a640f666ba132f92bd5fbed1084a51b6a644b76b done
#7 sending tarball
#7 sending tarball 6.2s done
#7 DONE 22.1s
#8 resolving provenance for metadata file
#8 DONE 0.0s

Some files were not shown because too many files have changed in this diff Show more