mirror of
https://github.com/olehomelchenko/astrolabe.git
synced 2026-08-08 02:02:33 +00:00
Reframe council audit as a one-off backfill, not a standing mode
This commit is contained in:
@@ -13,18 +13,22 @@ own contract **decides**. When a source conflicts with `SOUL.md`,
|
|||||||
`docs/architecture/10-interaction-and-feedback.md` (interaction contract), **our contract
|
`docs/architecture/10-interaction-and-feedback.md` (interaction contract), **our contract
|
||||||
wins** — note the divergence and move on.
|
wins** — note the divergence and move on.
|
||||||
|
|
||||||
## Two modes
|
## Scope: a steady-state mechanism, with a one-off debt to clear
|
||||||
|
|
||||||
- **Pointwise (now).** Consult on a single decision in front of you, via the routing table
|
The council's standing job is **pointwise** — consult on the decision in front of you (the
|
||||||
below. Cheap, precise, fits the editing flow — this is the default, and what the
|
routing table below), at authoring time. New user-facing work is checked as it's written,
|
||||||
auto-triggers fire.
|
so it never accrues the drift the council exists to prevent. This is the default, and what
|
||||||
- **Audit (future).** Periodically sweep the **whole codebase** against the roster — every
|
the auto-triggers fire.
|
||||||
interactive widget vs. APG, every user-facing string vs. GOV.UK/Carbon content rules,
|
|
||||||
every data surface vs. the loading/empty/error triad, every latency path vs. NN/g budgets
|
The **backfill** is _not_ a second mode — it's tech debt with an end. Code written _before_
|
||||||
— and emit a prioritized gap list into `docs/architecture/10` + `// TODO`s. This is a
|
the council existed was never checked against the roster; reconciling it is a one-off sweep
|
||||||
fan-out review (closer in shape to `/alignment`, but graded against external canon), best
|
(every pre-council widget vs. APG, every user-facing string vs. GOV.UK/Carbon content
|
||||||
run at **milestone boundaries**, not per change — and much of it is milestone-gated anyway
|
rules, every data surface vs. the loading/empty/error triad), emitting fixes + a gap list
|
||||||
(you can't audit modals or datasets that don't exist yet).
|
into `docs/architecture/10`. Done once, **pointwise keeps it honest — there is no recurring
|
||||||
|
audit.** The only thing that reopens it is an **event, never a schedule**: seating a new
|
||||||
|
member (its principles have never touched existing code) or a source's breaking revision —
|
||||||
|
see _Adding a seat_. A light glance at a milestone boundary is a fair safety net for what
|
||||||
|
the heuristic auto-trigger missed, but that's the same one-off sweep, not a standing mode.
|
||||||
|
|
||||||
## How to convene (the routing rule)
|
## How to convene (the routing rule)
|
||||||
|
|
||||||
@@ -74,6 +78,9 @@ contract, not the external source.
|
|||||||
2. Add one row to **the roster** and one routing entry above.
|
2. Add one row to **the roster** and one routing entry above.
|
||||||
3. Keep it lean — a seat earns its place only if it's authoritative for a decision the
|
3. Keep it lean — a seat earns its place only if it's authoritative for a decision the
|
||||||
others don't cover well.
|
others don't cover well.
|
||||||
|
4. **Backfill once.** Reconcile the existing codebase against the new seat — its principles
|
||||||
|
have never been applied before. This is the one event that reopens the one-off sweep
|
||||||
|
(see _Scope_); after it, pointwise maintains the new seat like the rest.
|
||||||
|
|
||||||
Candidate future seats (not yet seated): **FT Visual Vocabulary / Datawrapper** (chart
|
Candidate future seats (not yet seated): **FT Visual Vocabulary / Datawrapper** (chart
|
||||||
choice — our domain), **Shopify Polaris** (UX-writing depth), **web.dev** (perceived
|
choice — our domain), **Shopify Polaris** (UX-writing depth), **web.dev** (perceived
|
||||||
|
|||||||
Reference in New Issue
Block a user