Business needs as a checkable spec: needs.yaml + question_lint pass
Test / test (push) Successful in 27s
Test / test (push) Successful in 27s
A content repo may now state what the business needs the site to do,
apart from how the pages word it. question_lint checks each need
against the pages and aggregates.yaml:
- a path of submissions gets the answer into `lands_in`, within
`max_steps` and a required-field budget (`max_fields`);
- `handled_by` holds a desk over that bucket;
- every `done_when` state is reachable through the moves that desk
(or a self_transition) offers, and no record strands on the way;
- a disabled alternative is named as the reason when it is one;
- `planned: true` reports the gap as a warning instead of failing.
Personas - visitors in their own words - become typed `choice` tasks
(the page's question, its alternatives as the options) written as
JSONL by `--needs-tasks` (`--skim`: headings only). Any external
answering engine returns `{id, choice, confidence}` lines, graded by
`--needs-score [--min-accuracy]`: a misroute is a wording defect. The
engine stays outside this crate on purpose so classifiers and LLMs
can be compared on the same tasks. The runtime never reads the file.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01L4jrCgLiKKHAEFuZUJjckH
This commit is contained in:
co-authored by
Claude Fable 5.1
parent
75000421ae
commit
188f9bf574
@@ -74,6 +74,17 @@ stream.
|
||||
too: a `followup` page is offered only when it is on that path (the
|
||||
page the chain verifiably answered) or further down from the current
|
||||
page over `action` edges - one followup path never unlocks another.
|
||||
- **Business needs as a checkable spec** (`src/needs.rs`,
|
||||
`question_lint`): a content repo may ship a `needs.yaml` saying who
|
||||
wants what, which bucket the answer must land in, and which group
|
||||
has to carry it to a finished state. The lint proves the structure
|
||||
(a path of submissions within an effort budget, a desk held by that
|
||||
group, every finished state reachable, no record stranding; a
|
||||
`planned` need warns instead of failing). Its personas - visitors in
|
||||
their own words - become typed `choice` tasks for any external
|
||||
answering engine (`--needs-tasks`, `--skim` for headings only) whose
|
||||
picks are graded with `--needs-score`: a misroute is a wording
|
||||
defect. The runtime never reads the file.
|
||||
- **Live resources** (`src/resource.rs`): content can pull a KV
|
||||
bucket, Gitea starred/org repos/releases, or any public JSON URL
|
||||
(SSRF fail-closed), reshaped by a content-declared `jq` filter.
|
||||
|
||||
Reference in New Issue
Block a user