Release 0.2.0: replay, source enforcement, period rule, selective retry (WEBFETCH-WP-0002)
- --replay DIR / replay_dir: offline replay from the cache, hash-verified - ok values without source become error; Last-Modified recorded as published - latest period by parsed order (web_fetcher/periods.py); mixed formats refused - non-numeric values not_found unless value_type: string - retry only connection errors, timeouts, 429/5xx; honour Retry-After - opt-in live smoke test; 18 offline tests - CHANGELOG, README install docs, SCOPE update, capability D2/A3/C2/R2 - WEBFETCH-WP-0003 (repo hygiene) added Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Assistant: claude-code Assistant-Model: opus Assistant-Process: 153021@bnt-lap001 Assistant-Session: 46917be4-6400-4106-b8b7-61953a0caf24
This commit is contained in:
parent
5f4467dad8
commit
96fe5b022b
16 changed files with 696 additions and 133 deletions
|
|
@ -4,7 +4,7 @@ type: workplan
|
|||
title: "Versioned release and fetch hardening"
|
||||
domain: infotech
|
||||
repo: web-fetcher
|
||||
status: proposed
|
||||
status: finished
|
||||
flavor: implementation
|
||||
depends_on: [WEBFETCH-WP-0001]
|
||||
owner: codex
|
||||
|
|
@ -25,7 +25,7 @@ assessment. No third-party dependencies.
|
|||
|
||||
```task
|
||||
id: WEBFETCH-WP-0002-T01
|
||||
status: todo
|
||||
status: done
|
||||
priority: high
|
||||
state_hub_task_id: "e64ddb81-3d56-5e09-9744-5c0a7c26005b"
|
||||
```
|
||||
|
|
@ -41,7 +41,7 @@ that succeeded. Offline tests with a fake getter.
|
|||
|
||||
```task
|
||||
id: WEBFETCH-WP-0002-T02
|
||||
status: todo
|
||||
status: done
|
||||
priority: medium
|
||||
state_hub_task_id: "4cd456c7-6bd3-50a5-b267-ef9223d85e2b"
|
||||
```
|
||||
|
|
@ -54,7 +54,7 @@ fixtures cannot.
|
|||
|
||||
```task
|
||||
id: WEBFETCH-WP-0002-T05
|
||||
status: todo
|
||||
status: done
|
||||
priority: high
|
||||
state_hub_task_id: "80e43999-0884-52c1-a49d-b6bd494f898d"
|
||||
```
|
||||
|
|
@ -69,7 +69,7 @@ Also capture `Last-Modified` as `published` in the HTTP adapters where present.
|
|||
|
||||
```task
|
||||
id: WEBFETCH-WP-0002-T06
|
||||
status: todo
|
||||
status: done
|
||||
priority: high
|
||||
state_hub_task_id: "7716b978-995e-58cc-8375-40700e28da96"
|
||||
```
|
||||
|
|
@ -84,7 +84,7 @@ run produces identical observations, `retrieved_at` included.
|
|||
|
||||
```task
|
||||
id: WEBFETCH-WP-0002-T07
|
||||
status: todo
|
||||
status: done
|
||||
priority: medium
|
||||
state_hub_task_id: "193ee646-ecd8-52ca-b924-2d0502039d9d"
|
||||
```
|
||||
|
|
@ -100,23 +100,38 @@ stay `ok`.
|
|||
|
||||
```task
|
||||
id: WEBFETCH-WP-0002-T03
|
||||
status: todo
|
||||
status: done
|
||||
priority: high
|
||||
state_hub_task_id: "54db7c59-b27a-59f9-b7a3-04042e3087a2"
|
||||
```
|
||||
|
||||
Add a CHANGELOG, tag `v0.1.0` (or `v0.2.0` with T01), and document
|
||||
`pip install git+https://forgejo.coulomb.social/coulomb/web-fetcher@<tag>`.
|
||||
Point assembly-economics at the tag instead of `WEB_FETCHER_PATH`.
|
||||
Repointing assembly-economics at the tag is handed off to
|
||||
`WEBFETCH-WP-0003-T03` and the assembly-economics agent (cross-repo change).
|
||||
|
||||
## Update Capability Record
|
||||
|
||||
```task
|
||||
id: WEBFETCH-WP-0002-T04
|
||||
status: todo
|
||||
status: done
|
||||
priority: medium
|
||||
state_hub_task_id: "35f54169-764e-54a7-a1c2-7513dbafea37"
|
||||
```
|
||||
|
||||
Promote availability A2 → A3 with evidence citations and a `promotion_history`
|
||||
entry; update `SCOPE.md` current state.
|
||||
|
||||
## Outcome (2026-10-19)
|
||||
|
||||
Released v0.2.0. Replay (`--replay`), source enforcement, `Last-Modified` as
|
||||
`published`, parsed latest-period rule with stated note, numeric-value check,
|
||||
selective retry with `Retry-After`, opt-in live smoke test, CHANGELOG, README
|
||||
install docs, capability record promoted to D2 / A3 / C2 / R2.
|
||||
|
||||
Verification: 18 offline tests pass; live smoke test passes for all four
|
||||
adapters; all 31 assembly-economics specs give identical status/value/period
|
||||
under 0.1.0 and 0.2.0, and the replay of the cached run is byte-identical.
|
||||
|
||||
Residuals: consumer pinning to the tag → `WEBFETCH-WP-0003-T03` (and a hub
|
||||
message to assembly-economics); CI → `WEBFETCH-WP-0003-T01`.
|
||||
|
|
|
|||
94
workplans/WEBFETCH-WP-0003-repo-hygiene.md
Normal file
94
workplans/WEBFETCH-WP-0003-repo-hygiene.md
Normal file
|
|
@ -0,0 +1,94 @@
|
|||
---
|
||||
id: WEBFETCH-WP-0003
|
||||
type: workplan
|
||||
title: "Repository hygiene: CI, licence, deployment pinning, records"
|
||||
domain: infotech
|
||||
repo: web-fetcher
|
||||
status: ready
|
||||
flavor: implementation
|
||||
depends_on: []
|
||||
owner: codex
|
||||
topic_slug: stack
|
||||
created: "2026-10-19"
|
||||
updated: "2026-10-19"
|
||||
---
|
||||
|
||||
# Repository hygiene: CI, licence, deployment pinning, records
|
||||
|
||||
Smaller gaps found in the 2026-10-19 repo review, outside the
|
||||
scope-vs-intent work of `WEBFETCH-WP-0002`.
|
||||
|
||||
## Continuous Test Run on Forgejo
|
||||
|
||||
```task
|
||||
id: WEBFETCH-WP-0003-T01
|
||||
status: todo
|
||||
priority: medium
|
||||
```
|
||||
|
||||
Tests only run when someone remembers. Add a minimal Forgejo Actions workflow
|
||||
(`.forgejo/workflows/test.yml`) running
|
||||
`python3 -B -m unittest discover -s tests` on Python 3.10 and the newest
|
||||
supported version, plus `reuse-surface validate` if the runner can reach it.
|
||||
First confirm that the Forgejo instance has runners available for
|
||||
`coulomb/web-fetcher`; if not, record that and set this task to `wait`.
|
||||
|
||||
## Choose and Add a Licence
|
||||
|
||||
```task
|
||||
id: WEBFETCH-WP-0003-T02
|
||||
status: wait
|
||||
priority: medium
|
||||
```
|
||||
|
||||
The repo is offered for reuse via reuse-surface and pip installs from Forgejo
|
||||
but has no `LICENSE`. Licence choice is the founder's decision; once made, add
|
||||
`LICENSE` and the `license` field in `pyproject.toml`.
|
||||
|
||||
## Pin the railiance01 Deployment to a Release
|
||||
|
||||
```task
|
||||
id: WEBFETCH-WP-0003-T03
|
||||
status: todo
|
||||
priority: medium
|
||||
```
|
||||
|
||||
rein-aharness reads a railiance01 checkout that tracks `main` at whatever
|
||||
commit it was last pulled (`5fd7ec7` on 2026-10-13). Release `v0.2.0` exists
|
||||
(`WEBFETCH-WP-0002-T03`); coordinate with assembly-economics so the checkpoint
|
||||
run consumes a pinned tag instead of a moving checkout.
|
||||
|
||||
## Refresh the Custodian Brief
|
||||
|
||||
```task
|
||||
id: WEBFETCH-WP-0003-T04
|
||||
status: todo
|
||||
priority: low
|
||||
```
|
||||
|
||||
`.custodian-brief.md` still lists the WP-0001 tasks as open. It is generated;
|
||||
regenerate it with `statehub fix-consistency` rather than editing it by hand.
|
||||
|
||||
## Federate web-fetcher in the reuse-surface Checkout
|
||||
|
||||
```task
|
||||
id: WEBFETCH-WP-0003-T05
|
||||
status: wait
|
||||
priority: low
|
||||
```
|
||||
|
||||
reuse-surface commit `be5c006` adds web-fetcher to
|
||||
`registry/federation/sources.yaml`. It is committed but not pushed; pushing to
|
||||
reuse-surface `main` needs founder approval. The hosted service already lists
|
||||
the capability.
|
||||
|
||||
## Acknowledge Inbox Notices
|
||||
|
||||
```task
|
||||
id: WEBFETCH-WP-0003-T06
|
||||
status: todo
|
||||
priority: low
|
||||
```
|
||||
|
||||
Mark the two news items read and acknowledge the two standing notices
|
||||
(build-mode security layer, safe secret-check helper) for agent `web-fetcher`.
|
||||
Loading…
Add table
Add a link
Reference in a new issue