Renumber tasks sequentially for the hub identifier scheme

T05b and T05c were refused: work-record ids must have numeric suffixes.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014KmVxhJ35tCo7rE7UnLwWu

Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 1116572@bnt-lap001
Assistant-Session: 8ba9bb93-a72a-4883-b189-2499cce5c400
This commit is contained in:
tegwick 2026-09-04 11:58:09 +02:00
parent 3aa8cb7eaf
commit 2dd6d2687f
2 changed files with 21 additions and 31 deletions

View file

@ -11,6 +11,6 @@ are in place; the bot, the channel and the adapter itself are not.
- Governance: [`InterfaceEvolutionIntent.md`](InterfaceEvolutionIntent.md)
- The channel publishes composed posts written *from* hall entries, not the
entries themselves. Composition happens upstream and moves to
`pr-hall-of-helix` once the loop has closed once (FT-WP-0001 T11).
`pr-hall-of-helix` once the loop has closed once (FT-WP-0001 T13).
- Work: [`workplans/FT-WP-0001-telegram-identity-and-hall-channel.md`](workplans/FT-WP-0001-telegram-identity-and-hall-channel.md)
- Handover from fluid-core: `fluid-core/docs/handover/fluid-telegram.md`

View file

@ -52,7 +52,6 @@ adapter.
id: FT-WP-0001-T01
status: todo
priority: high
state_hub_task_id: "a5449e86-3181-54b6-a0fe-e5c761b3e4ba"
```
**Human step.** Register the HelixForge bot through BotFather (Canon BOT-01).
@ -70,7 +69,6 @@ briefly. Consistent with `HF-WP-0002` (bao.coulomb.social).
id: FT-WP-0001-T02
status: todo
priority: high
state_hub_task_id: "597ab1b7-5903-5a5d-a510-0a6946325404"
```
**Human step.** Create the **private test channel first**, then the public
@ -87,7 +85,6 @@ public channel until the rendering has been seen by a person.
id: FT-WP-0001-T03
status: todo
priority: high
state_hub_task_id: "bbe5da73-e604-5dfe-b25f-fba802f67618"
```
`openssl rand -hex 32`, stored in OpenBao beside the token, injected as
@ -100,7 +97,6 @@ rotating it silently invalidates every longitudinal comparison.
id: FT-WP-0001-T04
status: todo
priority: high
state_hub_task_id: "13a92a96-2f87-5de2-a69c-7edc21f3a0c7"
```
```bash
@ -120,7 +116,6 @@ only, and a revision signed with one stops verifying after a restart.
id: FT-WP-0001-T05
status: todo
priority: high
state_hub_task_id: "c89782da-9896-5957-b729-7c35165a0067"
```
Implement the three operations in `contracts/r1.openapi.yaml` against the
@ -132,10 +127,10 @@ post arriving without `reviewed_by` or a consent basis is refused with 403; and
a post that exceeds the limit for the form being published is refused rather
than truncated. The adapter renders and delivers. It never writes.
## T05b — Establish the composition step
## T06 — Establish the composition step
```task
id: FT-WP-0001-T05b
id: FT-WP-0001-T06
status: todo
priority: high
```
@ -144,7 +139,7 @@ Build the step that turns a hall entry into a post: condensed, personal,
entertaining, reach-optimized, carrying a link back to the source entry.
For now this lives here, as a script plus a review queue. It is temporary by
design — T11 extracts it into `pr-hall-of-helix` — so keep the seam clean. The
design — T13 extracts it into `pr-hall-of-helix` — so keep the seam clean. The
composition step's only interface to publishing is `POST /v1/channel-posts`,
and it must not reach into the adapter or the evidence store.
@ -158,10 +153,10 @@ someone's mouth that their own entry never made, and in the audit trail an
unfaithful post looks exactly like a faithful one. The reviewer reads the post
against the entry, and their name goes in `reviewed_by`.
## T05c — Record the consent basis for hall participants
## T07 — Record the consent basis for hall participants
```task
id: FT-WP-0001-T05c
id: FT-WP-0001-T07
status: todo
priority: high
```
@ -175,15 +170,14 @@ say plainly that it is revocable. Contributors who predate it should be asked
rather than assumed into it.
Absence of objection is not consent, and the interface refuses a post carrying
no basis, so this blocks T08.
no basis, so this blocks T10.
## T06 — Publish one post to the private channel
## T08 — Publish one post to the private channel
```task
id: FT-WP-0001-T06
id: FT-WP-0001-T08
status: todo
priority: high
state_hub_task_id: "317bef32-e82e-586a-8947-8cbb330f6c98"
```
The first real test. Compose one post from one entry, have it reviewed, publish
@ -201,13 +195,12 @@ it to the private channel, and confirm by looking at it:
The second bullet is the one that needs a person. Everything else can be
automated; whether a condensation is fair to the person it describes cannot.
## T07 — Implement both delivery forms as R-2 and R-3
## T09 — Implement both delivery forms as R-2 and R-3
```task
id: FT-WP-0001-T07
id: FT-WP-0001-T09
status: todo
priority: medium
state_hub_task_id: "6a91ea08-8814-58f3-8297-a7ca63405294"
```
R-2 implements `H-tg-visual` — portrait attached, and Telegram's 1024-character
@ -219,16 +212,15 @@ before either sees a subscriber.
The two arms impose different length limits on the composer, which is the one
place delivery and composition genuinely couple.
## T08 — Open the public channel and start publishing
## T10 — Open the public channel and start publishing
```task
id: FT-WP-0001-T08
id: FT-WP-0001-T10
status: todo
priority: medium
state_hub_task_id: "5e5cd89a-e7b1-5aaf-9331-ece424afe5e3"
```
Point the production adapter at the public channel. Blocked on T05c: no post
Point the production adapter at the public channel. Blocked on T07: no post
goes out about anyone's work without a recorded consent basis.
Do not batch-publish the backlog. Ninety-four posts in a burst is a rate-limit
@ -237,13 +229,12 @@ ninety-four compositions nobody has had time to read properly. Publish
selectively and at a human pace, and let the backlog be a source to draw on
rather than a queue to drain.
## T09 — Run the first delivery experiment
## T11 — Run the first delivery experiment
```task
id: FT-WP-0001-T09
id: FT-WP-0001-T11
status: todo
priority: low
state_hub_task_id: "649e7df6-6c07-5cc8-a022-d1eadcdb7236"
```
Start `E-tg-delivery` once the channel has roughly 100 subscribers. Before then
@ -255,13 +246,12 @@ thin, and the honest expectation is that the first run is inconclusive and
informs a better-powered second one. Record that expectation in the
experiment's amendments rather than discovering it as a disappointment.
## T10 — Close the loop
## T12 — Close the loop
```task
id: FT-WP-0001-T10
id: FT-WP-0001-T12
status: todo
priority: low
state_hub_task_id: "b469b9b8-a1a8-5f76-a1bb-dd51dd4d2ce5"
```
Record the hypothesis outcome, resolve `CG-tg-delivery`, and promote the winner.
@ -271,10 +261,10 @@ mismatch through to the promoted revision.
That trace is the deliverable. It is what makes this the first FLUID interface
rather than a bot that posts to a channel.
## T11 — Extract the campaign into pr-hall-of-helix
## T13 — Extract the campaign into pr-hall-of-helix
```task
id: FT-WP-0001-T11
id: FT-WP-0001-T13
status: todo
priority: medium
```
@ -302,5 +292,5 @@ campaign rather than being about the Hall of Helix specifically. And the Hall of
Helix campaign becomes an ongoing offering with its own intent, budget and
cadence, rather than living inside a workplan that was supposed to finish.
Do this once the loop has closed at least once (T10). Extracting a seam before
Do this once the loop has closed at least once (T12). Extracting a seam before
you have used it is how you find out you cut it in the wrong place.