chore(consistency): sync task status from DB [auto]

Updated by fix-consistency on 2026-10-13:
  - update .custodian-brief.md for rapp-playwright

Assistant: codex
Assistant-Model: gpt-6-astra
Assistant-Session: 01a13590-a16f-7f60-be60-fd71627bc99d
This commit is contained in:
custodian-sync 2026-10-13 20:24:20 +02:00
parent e2705891ac
commit e9b63c307b
15 changed files with 409 additions and 20 deletions

View file

@ -2,17 +2,11 @@
# Custodian Brief — rapp-playwright
**Domain:** infotech
**Last synced:** 2026-10-13 17:25 UTC
**Last synced:** 2026-10-13 18:24 UTC
**State Hub:** http://127.0.0.1:8000 *(adjust if running on a remote machine)*
## Active Workstreams
### Implement the reproducible browser service and Railiance package
Progress: 3/4 done | workplan_id: `8e662d81-cdcb-5d8c-9222-1faaa92fc307`
**Open tasks:**
- ! Package compatible Playwright and Chromium `227bec3f`
### Activate the service, prove agent consumption and update discovery
Progress: 1/3 done | workplan_id: `f9280c40-201e-59b5-a6f0-1aace8e0e2e2`

View file

@ -3,7 +3,7 @@
A bounded Playwright/Chromium job service for responsive screenshots and keyboard
journeys, with a standalone Python client and a private Railiance workload package.
**Implemented and verified locally. Managed activation awaits platform admission.**
**Implemented, verified locally and published. Managed activation awaits platform admission.**
The independent agent trial and pinned OnCo home-page pilot passed. The service
uses Playwright 1.64.0 and Chromium 156.0.8078.4; consumers need Python 3.10+ and
no browser installation.
@ -46,3 +46,7 @@ Use an immutable published digest for managed installation.
Registered in State Hub under `infotech / stack`. `railiance-platform` owns the
platform lifecycle; this repo owns service implementation. Discovery stays with
reuse-surface's existing `capability.infotech.headless-browser` record.
[Release 0.1.0](releases/0.1.0.json) pins the tested and published image.
[Publication evidence](docs/evidence/2026-10-13-publication.md) includes registry
manifest verification and a successful pull on railiance01.

View file

@ -2,7 +2,7 @@
As of 2026-10-13, the service, standalone Python client, browser trial and
Railiance package are implemented and verified locally. **Managed Railiance
availability is not established.** Image publication failed and platform admission
availability is not established.** Release 0.1.0 is published and verified by a cluster pull; platform admission
has not been confirmed. The founder selected `railiance-platform` as lifecycle
owner; service implementation remains here.
@ -41,13 +41,14 @@ artifacts expire; sanitized evidence under `docs/evidence/` is retained.
| Workplan | State and remaining evidence |
| --- | --- |
| WP-0002 | Finished: consumption contract, lifecycle and trial/pilot design |
| WP-0003 | Local implementation complete; T01 waits on OCI publication. Forgejo blob PUT returned HTTP 499/500 and remote manifest inspection returned `manifest unknown`. |
| WP-0004 | T02 provider trial/pilot done. T01 waits on publication and platform admission/access; T03 waits on reuse-surface's maintained/published discovery update. |
| WP-0003 | Finished: tested image published at its exact digest and pulled on railiance01; ingress upload deadline fixed. |
| WP-0004 | T02 provider trial/pilot done. T01 waits on platform admission/access; T03 waits on reuse-surface's maintained/published discovery update. |
The `playwright` namespace is absent. No cluster workload was created. Server
The `playwright` namespace is absent. No browser workload was created. Server
admission, private consumer binding, live target reachability, managed independent
trial, restart/cancellation and cross-version rollback remain unverified.
A local build digest is not a published release. Package validation/rendering
[Release 0.1.0](releases/0.1.0.json) is now published; see the
[publication fix and pull evidence](docs/evidence/2026-10-13-publication.md). Package validation/rendering
and Kubernetes client dry-run passed; they do not imply server admission.
Existing capability `capability.infotech.headless-browser` was still D3/A2/C2/R2

View file

@ -0,0 +1,162 @@
{
"observed_at": "2026-10-13T18:01:35.319316+00:00",
"forgejo_image": "code.forgejo.org/forgejo/forgejo:11.0.3-rootless",
"traefik_version": "3.6.7",
"prior_explicit_read_timeout": false,
"failed_blob_puts": [
{
"timestamp": "2026/10/13 16:50:28",
"status": 500,
"duration_ms": 60000.5
},
{
"timestamp": "2026/10/13 16:50:28",
"status": 500,
"duration_ms": 59998.7
},
{
"timestamp": "2026/10/13 16:50:28",
"status": 500,
"duration_ms": 7.6
},
{
"timestamp": "2026/10/13 16:50:28",
"status": 500,
"duration_ms": 59999.2
},
{
"timestamp": "2026/10/13 16:50:28",
"status": 500,
"duration_ms": 59998.0
},
{
"timestamp": "2026/10/13 16:50:28",
"status": 500,
"duration_ms": 59976.1
},
{
"timestamp": "2026/10/13 17:15:26",
"status": 500,
"duration_ms": 59999.7
},
{
"timestamp": "2026/10/13 17:15:26",
"status": 500,
"duration_ms": 60001.1
},
{
"timestamp": "2026/10/13 17:15:26",
"status": 500,
"duration_ms": 59999.5
},
{
"timestamp": "2026/10/13 17:15:26",
"status": 500,
"duration_ms": 59999.4
},
{
"timestamp": "2026/10/13 17:15:26",
"status": 500,
"duration_ms": 59924.0
},
{
"timestamp": "2026/10/13 17:17:21",
"status": 500,
"duration_ms": 59998.1
},
{
"timestamp": "2026/10/13 17:17:21",
"status": 500,
"duration_ms": 60001.2
},
{
"timestamp": "2026/10/13 17:17:21",
"status": 500,
"duration_ms": 60000.6
},
{
"timestamp": "2026/10/13 17:17:21",
"status": 500,
"duration_ms": 59999.5
},
{
"timestamp": "2026/10/13 17:17:21",
"status": 500,
"duration_ms": 59999.6
},
{
"timestamp": "2026/10/13 17:17:21",
"status": 500,
"duration_ms": 7.1
},
{
"timestamp": "2026/10/13 17:17:21",
"status": 500,
"duration_ms": 4.3
},
{
"timestamp": "2026/10/13 17:17:22",
"status": 500,
"duration_ms": 3.8
},
{
"timestamp": "2026/10/13 17:17:22",
"status": 500,
"duration_ms": 2.9
},
{
"timestamp": "2026/10/13 17:17:22",
"status": 500,
"duration_ms": 2.3
},
{
"timestamp": "2026/10/13 17:17:22",
"status": 500,
"duration_ms": 3.2
},
{
"timestamp": "2026/10/13 17:17:22",
"status": 500,
"duration_ms": 10.0
},
{
"timestamp": "2026/10/13 17:17:22",
"status": 500,
"duration_ms": 3.1
},
{
"timestamp": "2026/10/13 17:49:19",
"status": 500,
"duration_ms": 60000.2
},
{
"timestamp": "2026/10/13 17:49:19",
"status": 500,
"duration_ms": 59998.2
},
{
"timestamp": "2026/10/13 17:49:19",
"status": 500,
"duration_ms": 59999.9
},
{
"timestamp": "2026/10/13 17:49:19",
"status": 500,
"duration_ms": 60000.0
},
{
"timestamp": "2026/10/13 17:49:19",
"status": 500,
"duration_ms": 59999.4
}
],
"unexpected_eof_count": 20,
"offset_mismatch_count": 9,
"disk_available_gib": 129.9,
"forgejo_restarts": 0,
"cpu_requested_m": 3460,
"cpu_allocatable_m": 4000,
"rendered_change": "one additional argument: --entryPoints.websecure.transport.respondingTimeouts.readTimeout=600s",
"server_dry_run": "passed",
"client_diff": "new HelmChartConfig only"
}

View file

@ -0,0 +1,28 @@
{
"observed_at": "2026-10-13T18:12:13.559452+00:00",
"configuration_commit": "bad08fd712bded4aefe011d2cdad1f50ade8c43e",
"authority": "ADMINISTER @ realm:kubernetes/railiance01",
"activation": "APPROVED",
"source": "founder publication-fix instruction and explicit approval of shared timeout change",
"deployment_generation": 2,
"observed_generation": 2,
"ready_replicas": 1,
"image": "rancher/mirrored-library-traefik:3.6.7",
"timeout_arguments": [
"--entryPoints.websecure.transport.respondingTimeouts.readTimeout=600s"
],
"https_checks": [
{
"url": "https://forgejo.coulomb.social/api/v1/version",
"status": 200
},
{
"url": "https://reuse.coulomb.social/health",
"status": 200
},
{
"url": "https://forgejo.coulomb.social/v2/",
"status": 401
}
]
}

View file

@ -0,0 +1,53 @@
{
"observed_at": "2026-10-13T18:15:32.252082+00:00",
"uploads": [
{
"timestamp": "2026/10/13 18:13:40",
"kind": "blob",
"status": 201,
"duration_ms": 85466.9
},
{
"timestamp": "2026/10/13 18:14:02",
"kind": "blob",
"status": 201,
"duration_ms": 106917.7
},
{
"timestamp": "2026/10/13 18:14:06",
"kind": "blob",
"status": 201,
"duration_ms": 111375.0
},
{
"timestamp": "2026/10/13 18:15:07",
"kind": "blob",
"status": 201,
"duration_ms": 172691.8
},
{
"timestamp": "2026/10/13 18:15:17",
"kind": "blob",
"status": 201,
"duration_ms": 182603.3
},
{
"timestamp": "2026/10/13 18:15:17",
"kind": "manifest",
"status": 201,
"duration_ms": 39.3
},
{
"timestamp": "2026/10/13 18:15:17",
"kind": "manifest",
"status": 201,
"duration_ms": 108.9
},
{
"timestamp": "2026/10/13 18:15:17",
"kind": "manifest",
"status": 201,
"duration_ms": 30.6
}
]
}

View file

@ -0,0 +1,63 @@
# Forgejo image publication fixed — 2026-10-13
Release **0.1.0** is published and pullable on railiance01. Its immutable reference:
```text
forgejo.coulomb.social/coulomb/rapp-playwright@sha256:8d6fd5a8172cf906bb503642ed620761945c5138b86f6396c36f65cbe6def441
```
The fetched OCI index bytes hash to exactly that digest, matching the image
previously tested by the independent agent. The linux/amd64 manifest is
`sha256:20d8310d44cd807579aca06df01090a7bb27892ce387519f9957e4dd67f64cc7`;
cluster pull resolved the expected config
`sha256:5bda1139fda091648b1e984f6be8119291ad5616263b206d62ac7986ba2762b3`.
This publication did not rebuild or alter the browser image and did not deploy
the browser workload.
## Cause and fix
The previous HTTP 499/500 responses were caused by the shared Traefik ingress
cutting off large request bodies at its default 60-second read deadline. Forgejo
reported `unexpected EOF`; retries of those interrupted sessions could report
`offset mismatch between file and model`. Authentication and smaller blobs
succeeded. Forgejo had no restarts and approximately 130GiB disk available.
The approved fix declares a **bounded 600-second read timeout** on the shared
`websecure` entry point through a k3s `HelmChartConfig`. This setting covers HTTPS
request bodies for all services on that entry point. Other timeouts, TLS and
registry authentication remain unchanged. Source is owned by railiance-cluster:
`install/traefik/railiance01-helmchartconfig.yaml`, initial published commit
`bad08fd712bded4aefe011d2cdad1f50ade8c43e`, workplan RCLUSTER-WP-0016.
The estate close-down checklist row 23 tracks review of the longer shared budget.
Rendering the installed chart with its actual base values produced exactly one
additional argument. Server dry-run and diff passed, capacity was checked, and
the k3s Helm controller rolled Traefik to generation 2, Ready, on the same 3.6.7
image. Forgejo version and reuse health returned HTTP 200; registry `/v2/` still
returned HTTP 401 without authentication. Rollback is a reviewed source change
back to 60s and reapplication through the same controller.
References: [Traefik entry-point timeout](https://doc.traefik.io/traefik/v3.6/reference/install-configuration/entrypoints/)
and [k3s managed customization](https://docs.k3s.io/networking/networking-services).
## Executed verification
- `docker push forgejo.coulomb.social/coulomb/rapp-playwright:0.1.0` succeeded.
Five large layers completed with HTTP 201 in 85.5, 106.9, 111.4, 172.7 and
182.6 seconds. Manifests published at 2026-10-13T18:15:17Z.
- `docker buildx imagetools inspect ...:0.1.0` returned the exact expected index.
The raw fetched index's SHA-256 was independently computed and matched.
- `ssh railiance01 'sudo k3s crictl pull <immutable-reference>'` succeeded, and
`crictl inspecti` confirmed the expected image config identity.
Retained [diagnosis](2026-10-13-publication-diagnosis.json),
[rollout and HTTPS checks](2026-10-13-publication-timeout-rollout.json),
[successful upload timings](2026-10-13-publication-upload-timings.json),
[remote index](2026-10-13-published-image-index.json),
[cluster pull](2026-10-13-published-image-pull.json), and
[release record](../../releases/0.1.0.json).
WP-0003-T01 is now done and WP-0003 is finished. Managed workload admission,
consumer binding, deployment and live browser recovery/rollback remain in
WP-0004-T01. The publication fix does not claim those outcomes or close discovery
and consumer-acceptance work.

View file

@ -0,0 +1,28 @@
{
"schemaVersion": 2,
"mediaType": "application/vnd.oci.image.index.v1+json",
"manifests": [
{
"mediaType": "application/vnd.oci.image.manifest.v1+json",
"digest": "sha256:20d8310d44cd807579aca06df01090a7bb27892ce387519f9957e4dd67f64cc7",
"size": 3344,
"platform": {
"architecture": "amd64",
"os": "linux"
}
},
{
"mediaType": "application/vnd.oci.image.manifest.v1+json",
"digest": "sha256:3267896f3b778dedce0b2c92ea1c67b64a6e168417aa422c4750dcbcb0d165f5",
"size": 566,
"annotations": {
"vnd.docker.reference.digest": "sha256:20d8310d44cd807579aca06df01090a7bb27892ce387519f9957e4dd67f64cc7",
"vnd.docker.reference.type": "attestation-manifest"
},
"platform": {
"architecture": "unknown",
"os": "unknown"
}
}
]
}

View file

@ -0,0 +1,12 @@
{
"observed_at": "2026-10-13T18:17:15.031531+00:00",
"node": "railiance01",
"pull_command": "sudo k3s crictl pull forgejo.coulomb.social/coulomb/rapp-playwright@sha256:8d6fd5a8172cf906bb503642ed620761945c5138b86f6396c36f65cbe6def441",
"pull_exit_code": 0,
"image_id": "sha256:5bda1139fda091648b1e984f6be8119291ad5616263b206d62ac7986ba2762b3",
"repo_digests": [
"forgejo.coulomb.social/coulomb/rapp-playwright@sha256:8d6fd5a8172cf906bb503642ed620761945c5138b86f6396c36f65cbe6def441"
],
"size_bytes": "990518395",
"workload_deployed": false
}

View file

@ -69,3 +69,10 @@ explicit migration/rollback decision.
Upgrade Playwright and its base image together, update the lockfile, repeat the
unit/browser/client tests and consumer pilot, then publish a new immutable image.
The Python client checks protocol v1 and does not install Playwright.
## Published release
Release [0.1.0](../releases/0.1.0.json) is published and pull-verified. Use its
immutable reference for rendering; registry publication is no longer blocked.
The cluster-owned ingress now allows a bounded 600-second HTTPS request body;
see [cause, rollout and verification](evidence/2026-10-13-publication.md).

View file

@ -74,3 +74,12 @@ Open delivery gaps stay in existing live workplan tasks with owner messages and
resume instructions; no workplan was falsely finished. Work stops after publishing
this assessment as requested, with registry delivery/admission/discovery requiring
external owner action before further managed-service progress.
## Later resolution — 2026-10-13 20:18 Europe/Berlin
Gap 1 is resolved: the ingress read deadline was raised from 60s to bounded
600s through the approved cluster-owned configuration. The exact tested image
published successfully, its remote manifest bytes match the expected SHA-256,
and railiance01 pulled it. WP-0003 is finished. See the
[publication report](../docs/evidence/2026-10-13-publication.md). Gaps 2–4 remain;
this addendum preserves the earlier assessment as a dated observation.

13
releases/0.1.0.json Normal file
View file

@ -0,0 +1,13 @@
{
"version": "0.1.0",
"image": "forgejo.coulomb.social/coulomb/rapp-playwright@sha256:8d6fd5a8172cf906bb503642ed620761945c5138b86f6396c36f65cbe6def441",
"tag": "forgejo.coulomb.social/coulomb/rapp-playwright:0.1.0",
"published_at": "2026-10-13T18:15:17Z",
"verified_at": "2026-10-13T18:15:58.625521+00:00",
"platform": "linux/amd64",
"manifest": "sha256:20d8310d44cd807579aca06df01090a7bb27892ce387519f9957e4dd67f64cc7",
"playwright_version": "1.64.0",
"chromium_version": "156.0.8078.4",
"implementation_commit": "ccf46d8c598b6e82022beeed9048f785dc2bbd74",
"verification": "Remote OCI index bytes SHA-256 matches the independently tested local image index. Cluster pull verification is recorded separately."
}

View file

@ -5,7 +5,7 @@ title: "Implement the reproducible browser service and Railiance package"
domain: infotech
repo: rapp-playwright
topic_slug: stack
status: active
status: finished
flavor: implementation
owner: codex
depends_on: [RAPP-PLAYWRIGHT-WP-0002]
@ -25,8 +25,7 @@ unverified until WP-0004.
```task
id: RAPP-PLAYWRIGHT-WP-0003-T01
status: wait
blocked_on: message-from:railiance-platform
status: done
priority: high
state_hub_task_id: "227bec3f-1de8-5d8d-9dfd-b4eb5a836ae6"
```
@ -99,7 +98,7 @@ managed declaration, immutable rendering and client-side Kubernetes validation.
See [verification and retained logs](../docs/evidence/2026-10-13-implementation.md)
and [independent final-image trial](../docs/evidence/2026-10-13-independent-local-consumer.md).
T01 remains **wait**. The final image builds and launches, but its required OCI
At the initial implementation checkpoint T01 remained **wait**. The final image builds and launches, but its required OCI
publication failed at Forgejo blob PUT with HTTP 499/500. Remote digest inspection
returns `manifest unknown`. Candidate local index is
`sha256:8d6fd5a8172cf906bb503642ed620761945c5138b86f6396c36f65cbe6def441`.
@ -107,3 +106,17 @@ Platform handoff `e77247e5-ce25-4711-a64f-af81a9f7cbb1` carries this blocker.
Resume by resolving registry delivery with its owner, pushing the tested image,
and reading back the immutable remote digest. Do not mark this plan finished
or advertise an installable release before that proof.
### Publication fix completed — 2026-10-13
The founder requested resolving publication. Forgejo logs show unexpected EOF at
60 seconds; Traefik used its default request-read deadline. The approved fix is
cluster source commit `bad08fd712bded4aefe011d2cdad1f50ade8c43e`, raising the shared
HTTPS read budget to a bounded 600 seconds through a k3s HelmChartConfig.
Generation 2 is Ready with the exact argument and HTTPS/authentication probes
pass. The original tested image published successfully at 18:15:17Z. Remote OCI index
bytes hash to the exact tested digest, and railiance01 pulled the image and
confirmed its config identity. T01 is done and this plan is finished. See the
[publication report](../docs/evidence/2026-10-13-publication.md). Cluster execution
is tracked by RCLUSTER-WP-0016. Remaining managed activation and discovery work
already have live records in WP-0004; no such work is closed by publication.

View file

@ -92,10 +92,12 @@ and [pilot](../docs/content-explorer-pilot.md). Content-explorer was notified vi
`621635c9-0a72-4a88-9fd6-2ee1fbddc68f`; it decides its own T04 acceptance and further
route coverage. Local proof does not imply managed endpoint proof.
T01 remains **wait** on WP-0003 image publication and railiance-platform admission
T01 remains **wait** on railiance-platform admission
(`c82d75f3-3191-410d-a8c8-fd647bf7f3ef`, follow-up
`e77247e5-ce25-4711-a64f-af81a9f7cbb1`). Founder selected that lifecycle owner.
The namespace is absent; no workload was deployed. Current capacity and reviewed
WP-0003 publication is now complete: exact immutable digest readback and
railiance01 pull passed; see [publication evidence](../docs/evidence/2026-10-13-publication.md).
The namespace is absent; no browser workload was deployed. Current capacity and reviewed
package exist. Resume with owner admission/access, bootstrap/server dry-run/diff,
immutable rollout, independent managed trial and live cancellation/restart/rollback.

View file

@ -4,7 +4,7 @@
| --- | --- | --- |
| [WP-0001](RAPP-PLAYWRIGHT-WP-0001-statehub-bootstrap.md) | Demand and State Hub bootstrap | Finished |
| [WP-0002](RAPP-PLAYWRIGHT-WP-0002-consumer-contract.md) | Agent contract and trial | Finished |
| [WP-0003](RAPP-PLAYWRIGHT-WP-0003-service-package.md) | Service, client and Railiance package | Implemented locally; image publication waits on Forgejo |
| [WP-0003](RAPP-PLAYWRIGHT-WP-0003-service-package.md) | Service, client and Railiance package | Finished: implemented, tested, published and pulled by digest |
| [WP-0004](RAPP-PLAYWRIGHT-WP-0004-consumer-verification.md) | Activate, prove consumption and update discovery | Independent local trial/pilot done; managed activation and registry update blocked |
The founder authorized implementation after the original bootstrap. Platform