From ad9dd1762bf9be58f95244c783850ec502103bfa Mon Sep 17 00:00:00 2001 From: Bendik Aagaard Lynghaug Date: Mon, 24 Aug 2026 22:32:01 +0200 Subject: [PATCH] The tree is the router: nest the develop flow, section-gate review develop/ holds the whole proposal flow (index = owners desk, proposal = public form, proposed = chain-gated receipt) with relative actions; review/ gains _section.yaml (one owners gate for the directory) and a [record].yaml dynamic page - /review/ shows a single proposal. Top-level files drop their now-derived id: and fossil route: fields. URLs /develop-proposal and /proposed become /develop/proposal and /develop/proposed (no automation references them - n8n filters checked). Co-Authored-By: Claude Fable 5 --- questions/applied.yaml | 2 -- .../{develop.yaml => develop/index.yaml} | 2 -- .../proposal.yaml} | 7 ++++--- questions/{ => develop}/proposed.yaml | 6 +++--- questions/index.yaml | 1 - questions/project.yaml | 2 -- questions/review/[record].yaml | 20 +++++++++++++++++++ questions/review/_section.yaml | 3 +++ questions/{review.yaml => review/index.yaml} | 3 --- questions/subscribed.yaml | 2 -- 10 files changed, 30 insertions(+), 18 deletions(-) rename questions/{develop.yaml => develop/index.yaml} (95%) rename questions/{develop-proposal.yaml => develop/proposal.yaml} (95%) rename questions/{ => develop}/proposed.yaml (77%) create mode 100644 questions/review/[record].yaml create mode 100644 questions/review/_section.yaml rename questions/{review.yaml => review/index.yaml} (98%) diff --git a/questions/applied.yaml b/questions/applied.yaml index 8ff67ec..92e63aa 100644 --- a/questions/applied.yaml +++ b/questions/applied.yaml @@ -1,5 +1,3 @@ -id: /applied -route: ^/applied followup: true name: What happens now that you've applied? description: > diff --git a/questions/develop.yaml b/questions/develop/index.yaml similarity index 95% rename from questions/develop.yaml rename to questions/develop/index.yaml index 6427c52..5cb5a33 100644 --- a/questions/develop.yaml +++ b/questions/develop/index.yaml @@ -1,5 +1,3 @@ -id: /develop -route: ^/develop name: Development proposals qualifies: owners description: > diff --git a/questions/develop-proposal.yaml b/questions/develop/proposal.yaml similarity index 95% rename from questions/develop-proposal.yaml rename to questions/develop/proposal.yaml index e518387..114aafe 100644 --- a/questions/develop-proposal.yaml +++ b/questions/develop/proposal.yaml @@ -1,5 +1,6 @@ -id: /develop-proposal -route: ^/develop-proposal +# Nested for the flow, but a public entry point - without this it +# would infer followup and drop out of the nav. +followup: false name: How can this website improve? description: > This site is built on the same question architecture you're using @@ -13,7 +14,7 @@ alternatives: a page under questions/, or aggregates.yaml — verbatim, so it has to be complete, valid YAML for that file, not a diff. Nothing outside those files is in scope. - action: /proposed + action: proposed consequence: [Propose it] record_as: development_proposals encouragements: diff --git a/questions/proposed.yaml b/questions/develop/proposed.yaml similarity index 77% rename from questions/proposed.yaml rename to questions/develop/proposed.yaml index ebb6eef..88565a0 100644 --- a/questions/proposed.yaml +++ b/questions/develop/proposed.yaml @@ -1,6 +1,6 @@ -id: /proposed -route: ^/proposed -followup: true +# Reached from the proposal form only - and provably so: the visitor +# must hold a ?chain= lineage ending at an answer to proposal.yaml. +requires_chain: proposal name: Proposal received description: > It's in the queue. An owner reads every proposal in full — approved diff --git a/questions/index.yaml b/questions/index.yaml index c1e1a1b..ec1086e 100644 --- a/questions/index.yaml +++ b/questions/index.yaml @@ -1,4 +1,3 @@ -id: / name: What are you here for? description: > Strategies that address problems — applied in software. diff --git a/questions/project.yaml b/questions/project.yaml index cb3ce10..36f25ae 100644 --- a/questions/project.yaml +++ b/questions/project.yaml @@ -1,5 +1,3 @@ -id: /project -route: ^/project followup: true name: So, what happens now? description: > diff --git a/questions/review/[record].yaml b/questions/review/[record].yaml new file mode 100644 index 0000000..5eb52c7 --- /dev/null +++ b/questions/review/[record].yaml @@ -0,0 +1,20 @@ +# Dynamic page: /review/ shows one development proposal, +# addressed by its record key. The {record} placeholder receives the +# URL segment; the section's qualifies (plus the resource's own +# requires_group) keeps it owner-only. +name: One proposal +description: > + A single development proposal, addressed by its record key — link or + paste a chain hash from the desk. +alternatives: + - name: Record + description: "" + features: + - name: "" + description: "" + resource: + source: + kind: kv + bucket: development_proposals + key: "{record}" + requires_group: owners diff --git a/questions/review/_section.yaml b/questions/review/_section.yaml new file mode 100644 index 0000000..fbdabae --- /dev/null +++ b/questions/review/_section.yaml @@ -0,0 +1,3 @@ +# Everything under /review is the owners' area - one gate for the +# whole directory instead of a qualifies flag per file. +qualifies: owners diff --git a/questions/review.yaml b/questions/review/index.yaml similarity index 98% rename from questions/review.yaml rename to questions/review/index.yaml index 6c9172c..9615685 100644 --- a/questions/review.yaml +++ b/questions/review/index.yaml @@ -1,7 +1,4 @@ -id: /review -route: ^/review name: The review desk -qualifies: owners description: > Sign in as an organizational owner to see what's come in. alternatives: diff --git a/questions/subscribed.yaml b/questions/subscribed.yaml index 4927821..9059184 100644 --- a/questions/subscribed.yaml +++ b/questions/subscribed.yaml @@ -1,5 +1,3 @@ -id: /subscribed -route: ^/subscribed followup: true name: What should you expect? description: >