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,104 @@
---
name: polaris-close
description: "Close a finished workstream in an Polaris vault and return its deliverable to the Area that spawned it. Verifies done_when is actually met, splits the output into deliverable (→ 2. Areas/<Area>/knowledge/) and process record (→ 5. Archive/<Area>/<ID>/), updates the Area hub, releases follow-ups tied to the work, and repoints inbound links. Not reversible. Distinct from polaris-archive, which retires a whole Area. Triggers on: close workstream, close [ID], this is done, finish workstream, ship it."
---
# polaris-close — return a finished workstream to its Area
**An Area spawns a workstream; when the workstream finishes, its deliverable comes home.** The Area is the memory; the workstream is the episode. If finished output archives together with its process, the Area learns nothing and the next workstream starts cold.
```
2. Areas/<Area>/ ──spawns──▶ 1. Projects/<Area>/<Name>/
knowledge/ ◀── deliverable ──────────────────┤
└── process ──▶ 5. Archive/<Area>/<ID>/
```
## Close or archive?
| | `polaris-close` | `polaris-archive` |
|---|---|---|
| Trigger | One workstream **finished** | A whole Area **ended or paused** |
| The Area | **Stays, gains knowledge** | Moves into the archive |
| Reversible | **No** | Yes |
**Is the Area staying? → close. Is it going away? → archive.** If there's any chance the work resumes, it's `paused`, not closed.
---
## 1. Verify `done_when:` against reality
Read the hub's `done_when:` and check it against what actually exists — not against how finished the work feels.
**Not met → stop and say which part is outstanding.** Never rewrite `done_when:` at close time to match what happened; a done-when edited at close never tested anything. Legitimate paths:
| Situation | Action |
|---|---|
| Work is done, the sentence was wrong | **The owner's call.** Record the correction and why on the hub, then close |
| Work stopped and won't resume | Not a close — `paused` with a reason |
| Scope changed | Old workstream closes as superseded; a new one opens with a new ID |
## 2. Split the output
| Pile | Goes to | What |
|---|---|---|
| **Deliverable** | `2. Areas/<Area>/knowledge/` | What the Area now knows: conclusions, specs, finished documents, reusable findings |
| **Process record** | `5. Archive/<Area>/<ID>/` | How it got there: session notes, drafts, dead ends, the hub itself |
**One question per file:** *would someone working in this Area six months from now want this without knowing the workstream existed?* Yes → knowledge. No → archive.
**When genuinely unclear, ask.** This is the one checkpoint that stops execution.
## 3. Migrate the deliverable
Move each deliverable file into `knowledge/`. **Keep the filename** (renaming breaks links for no gain). Add a provenance line if missing: *"Produced by `<ID>` — `<Name>`, closed YYYY-MM-DD."*
## 4. Archive the process record
Move everything else, **including `<ID>_hub.md`**, to `5. Archive/<Area>/<ID>/`. Set `status: closed`, add `closed: YYYY-MM-DD`. No tombstone needed — nothing to restore.
## 5. Update the Area hub
Mark the workstream closed in `## Workstreams`, with its ID and one line on what it produced. Link the deliverable from the hub or `knowledge/_index.md`. ⚠ **Never decrement `workstream_counter:`.** IDs are never reused.
## 6. Release follow-ups
List every `tier: relationship` person whose follow-up exists *for this workstream* (they link the hub, are named by its `next:`, or their page says so). **Change nothing on their pages** — whether the relationship outlives the work is the owner's call. Record them on a `Released:` line in the log entry; the next weekly sweep lists them.
## 7. Repoint inbound links
1. **Scan** every `.md` in the vault for `[[…]]` targets pointing into the old folder (full-path and bare-name forms). Ignore links inside code blocks.
2. **Resolve each hit against the real file tree** — a grep hit is a hypothesis.
3. **Change only the link target, never the prose.** Keep display aliases: `[[new/path/File|Original Text]]`. Ledgers (`4. Decisions/`, `wiki/log.md`, `wiki/folds/`) included — pointer only.
4. **Rescan from scratch and report that number**, not a tally of your edits.
## 8. Log and hand off
Append to `wiki/log.md`: `[build]` with a `Shipped:` line if the deliverable is a shipped thing, otherwise `[vault]`. Include `Released:` if any. Then suggest `cascade`.
---
## Output
```
## Close — <ID> · <Name>
done_when: "<sentence>" — ✅ met / ⚠ met with correction (why)
Deliverable → 2. Areas/<Area>/knowledge/
- <file> — what the Area now knows
Process → 5. Archive/<Area>/<ID>/ — N files incl. hub
Area hub: <what changed>
Links repointed: N — rescan shows N dead (was N)
Released: <Name — follow_up_by, what it was for> · or none
Next: run cascade.
```
## Rules
- **Verify done_when before anything moves.** Never rewrite it to fit.
- **Split deliverable from process.** Ask only when genuinely unclear.
- **Every migrated file carries its origin.**
- **Never decrement the counter. Never reuse an ID.**
- **Closing isn't reversible.** If it might resume, pause it.
- **Only link targets change. Rescan and report the rescan.**
- **`area: none` workstreams archive whole** — there's no knowledge base to receive a deliverable.