Polaris boilerplate: PARA vault, AGENTS.md rulebook, eight polaris skills

This commit is contained in:
Avi 2026-09-23 18:49:57 -05:00
commit 0ca9086de5
39 changed files with 1829 additions and 0 deletions

View file

@ -0,0 +1,153 @@
---
name: polaris-cascade
description: "Sync an Polaris vault's wiki/ navigation layer from the numbered folders. Rewrites wiki/hot.md (current state: outstanding sends, workstreams, the owner's own next moves, people due for follow-up), appends one wiki/log.md entry, rebuilds wiki/index.md when structure changed, and reports how many log entries are waiting to be folded. Run at the end of every session that changed something. Triggers on: cascade, run cascade, sync the wiki, update the wiki."
---
# polaris-cascade — sync the wiki layer
The numbered folders are the source of truth. Cascade reads them and rewrites `wiki/` to match. **One command, no flags.** Always rewrite `hot.md` and append to `log.md`; rebuild `index.md` when you see the structure changed (a hub added, moved, renamed, or its `status`/`area` changed). When in doubt, rebuild it.
⛔ Skip every path listed under *Fences* in `AGENTS.md`.
---
## 1. Read hubs
Glob `1. Projects/**/*_hub.md` and `2. Areas/**/*_hub.md` — **match the `_hub` suffix, never a full filename.**
- **Skip `paused`, `closed` and `archived` Projects** for attention purposes (count them, don't read them further). Paused is a deliberate exclusion.
- **Areas carry no attention status.** List them; never compute drift or freshness on one.
- For each `open` Project: `id`, name, `next:` (**may be a YAML list — read every entry**), `deadline:`.
## 2. Read people
Glob `3. Resources/People/*.md`. **Only `tier: relationship` pages can flag.**
For each: compute the **live due date**:
- `follow_up_by` after `last_contact` (or no `last_contact`) → `follow_up_by`.
- `follow_up_by` on or before `last_contact` is **spent** → `weekly`/`biweekly`/`monthly`: `last_contact` + 7/14/30 days, marked *(from last contact)*; `organic`: **no date since contact** (its own line, never overdue).
- No `follow_up_by` at all → **defect**.
Bucket: **Overdue** · **Due within 7 days** · **No date since contact** · **Defects**. **Never write a computed date back to the page.**
⚠ **This step is where names get swapped or dropped.** Before writing, check every name you're about to render against its own file's `tier:` and dates. Similar names are the usual failure.
## 3. Read threads
Glob `3. Resources/Threads/*.md`: `status`, one-line state. **A thread whose `domains:` no longer name any live hub has collapsed** — flag it for close or drop.
## 4. Read holds
`wiki/meta/holds.md`, before rendering any age. Rules → `AGENTS.md`, *Holds*. In short: an open hold covering an item → render `held`; a closed hold → `3d (since 01-05, 11d held)`; an item created after the hold began is not covered.
## 5. Rewrite `wiki/hot.md`
**Rewrite, never append.** Hard cap **80 lines.** Sections in this order:
```markdown
## Hold ← only when one is open. Two lines: period, scope
## Outstanding sends ← every `send` and `wait` from live hubs, with age
## Workstreams ← "N open: WEB-1, WEB-3, OPS-2 · N paused: …" — one line, never a block each
## Now ← every `build`/`decide` next: — the owner's own moves. Oldest [since] first, no ages
## People ← "N armed", then overdue / due soon / defects by name
## Threads ← open threads, one line each (omit if none)
## Warnings ← ⚠ items worth carrying (omit if none)
## Standing state ← carried forward, pruned each run
```
**Ageing sends:** `[since YYYY-MM-DD]` is the authority → else git (`git log -1 --format=%ad --date=short -S'next:' -- <hub>`) → else **no age**. A wrong age is worse than none.
**Mis-verbed moves are a repair:** a `send →`/`wait →` naming the owner is really a `build`; a `build →` whose move is a message is really a `send`. Fix the hub's verb, then render.
**Never age an `open` workstream.** It has no clock by design.
**The cap is enforced by eviction, not compression.** At 80 lines, find what no longer belongs; don't shrink prose or raise the cap.
**The two-run exit for warnings.** A `⚠` item that appears in **two consecutive cascades** without resolving moves to `wiki/meta/open-questions.md` as a forced binary, and `hot.md` keeps one pointer line stating the consequence:
```markdown
⚠ Vendor quote unverified — don't cite its dates → open question #4
```
**Never drop a warning without leaving a pointer.**
**Vault voice:** everything in `hot.md` is the vault speaking. A claim sourced from a document, not from the owner, stays attributed or stays out.
## 6. Rebuild `wiki/index.md` — when structure changed
Plain markdown, one line per page, navigation only — no prose:
```markdown
## Areas
- [[2. Areas/Website/Website_hub|Website]] — standing · prefix WEB · 3 issued
## Projects
### Open
- [[1. Projects/Website/Pricing Page/WEB-3_hub|WEB-3 Pricing Page]] — done when: "…"
### Paused
## Threads
## People
### Relationship tier
- [[3. Resources/People/Sam Example|Sam Example]] — monthly · due 2026-02-01
### Contacts
## Decisions
- [[4. Decisions/2026-01-05-pricing-model|2026-01-05 Pricing model]] — open
## Folds
```
*(If the vault is opened in Obsidian with Dataview, the owner may replace sections with queries. Keep the headings.)*
## 7. Append to `wiki/log.md`
New entry **at the top**, below the header. Never edit a past entry.
```markdown
## YYYY-MM-DD — [vault] Cascade: <what changed, in a few words>
- Projects: N open, N paused
- People: N overdue, N due soon — <names>
- <notable state changes>
```
Use `[build]` only when the session shipped something, and then add `Shipped: <what exists now that didn't>`.
## 8. Count unfolded log entries — every run
```bash
grep -c '^## [0-9]' wiki/log.md # all entry headings
grep -c '\[folded\]' wiki/log.md # fold pointers — not entries
```
**Unfolded = headings − pointers.** Threshold **16**. Print the number every run, above or below threshold: `Log: 9 / 16` or `Log: 23 / 16 — fold due`. **Don't run the fold** — that's `polaris-fold`, on the owner's word.
---
## Output
```
## Cascade — YYYY-MM-DD
Sends outstanding
- <Person> — <what> (<age>)
Workstreams: N open (<IDs>) · N paused (<IDs>)
People (armed: N)
Overdue: <Name> (due YYYY-MM-DD)
Due this week: <Name> (due YYYY-MM-DD[, from last contact])
Defects: <Name> — no follow_up_by
Threads: <collapsed or notable>
Log: N / 16 [— fold due]
Wiki updated: hot.md · log.md [· index.md]
Verified: <N> rendered names checked against their own files — pass / <mismatch>
```
The `Log` and `Verified` lines print every run. A check that only speaks when something's wrong teaches nobody what normal looks like.
## Rules
- **`hot.md` and `index.md` are state — rewrite. `log.md` is a ledger — prepend, never edit.**
- **Skip paused/closed/archived Projects. Never compute drift on an Area.**
- **Only `tier: relationship` people flag.** Spent follow-ups compute a live date; the stored one is never rewritten.
- **Never render an age you can't source.**
- **Unconfirmed claims stay attributed or out.**
- **Verify every rendered name and count before writing.**