Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
54 commits
Select commit Hold shift + click to select a range
c28ea8b
docs(skills): reconcile strategies/lenses READMEs to current state
lunelson Jun 25, 2026
2c2b96e
docs(plan): add initiative (arc) altitude + arc-completion trigger
lunelson Jun 25, 2026
be5baea
feat(graph): generate kind→band ontology reference + drift guard
lunelson Jun 25, 2026
1617570
docs(sync): ln-sync canonical pass — retire A30-L, reconcile graph sc…
lunelson Jun 25, 2026
c59f5df
adapt to post-ontology-change legacy fixtures
lunelson Jun 25, 2026
f147f3b
update readme and plan
lunelson Jun 25, 2026
497056a
fix: keep verify gate clean
lunelson Jun 25, 2026
2886585
consolidate pi extensions by area of concern
lunelson Jun 25, 2026
03c16a9
tool schema type hardening
lunelson Jun 25, 2026
5a814ea
src/agents/ centralization refactor step 1
lunelson Jun 25, 2026
add7398
Move agent prompt bodies under agents
lunelson Jun 25, 2026
45376a8
Move prompt resources under agents
lunelson Jun 25, 2026
b14e603
Move agent runtime policy under agents
lunelson Jun 25, 2026
b9f2254
Move agent context seeds under agents
lunelson Jun 25, 2026
43d929a
Move agent-visible renderers under agents
lunelson Jun 25, 2026
b215527
Promote adapter model text into agents contexts
lunelson Jun 25, 2026
50712d8
Point prompt and context test scripts at agents
lunelson Jun 25, 2026
56302b9
Guard agent context text ownership
lunelson Jun 25, 2026
f330246
Reconcile agent context topology docs
lunelson Jun 26, 2026
fe7da28
Characterize renderer moves at target owners
lunelson Jun 26, 2026
129a1d0
Move foreground runtime policy under agents
lunelson Jun 26, 2026
f09246f
Delete projection runtime-policy bridge
lunelson Jun 26, 2026
9a6ce84
Render related graph nodes semantically
lunelson Jun 26, 2026
b8ba992
Move print workspace rendering into app
lunelson Jun 26, 2026
f7527f9
Move transcript markdown into session
lunelson Jun 26, 2026
1071d66
Retire renderers topology
lunelson Jun 26, 2026
c8037d0
Reconcile stale topology path fossils
lunelson Jun 26, 2026
67a84d4
stub knip config
lunelson Jun 26, 2026
5d41940
Acknowledge Pi theme setting getter
lunelson Jun 26, 2026
24393b1
Move capability readiness under agents runtime
lunelson Jun 26, 2026
1f516dd
Delete runtime affordance projection wrapper
lunelson Jun 26, 2026
60f2d86
Reconcile projection runtime topology
lunelson Jun 26, 2026
b9855a5
Reconcile prompt body path fossils
lunelson Jun 26, 2026
fb8be35
Rename context surface test scripts
lunelson Jun 26, 2026
fa1bbb8
Retire runtime topology refactor plan
lunelson Jun 26, 2026
d776d10
Reconcile runtime topology references
lunelson Jun 26, 2026
0d352bb
Add Pi extension example notes, for upcoming dev
lunelson Jun 26, 2026
426d8b9
Harden Brunch Pi runtime tools
lunelson Jun 26, 2026
c1ee6a2
Extract Brunch Pi session option policy
lunelson Jun 26, 2026
40849be
Split Pi runtime tests from TUI boot
lunelson Jun 26, 2026
74b2f1f
Reconcile app runtime topology notes
lunelson Jun 26, 2026
1160216
ad-hoc re-homing of all tests inside of src/.pi
lunelson Jun 26, 2026
48bd64f
first move for generative src/agents/contexts/references/
lunelson Jun 26, 2026
cc246ac
move the shared resources in contexts
lunelson Jun 26, 2026
4c46efc
Adopt house style for graph seed renderers
lunelson Jun 26, 2026
836be0d
Add graph authoring heuristics reference
lunelson Jun 26, 2026
1db4304
Generate graph edge and detail reference tables
lunelson Jun 26, 2026
99f47ab
Enforce context import boundary
lunelson Jun 26, 2026
604ef80
Reconcile ontology reference docs
lunelson Jun 26, 2026
da51899
Delete legacy edge repair bridge
lunelson Jun 26, 2026
a17674e
Use direct Gherkin then keys
lunelson Jun 26, 2026
517bb4c
Correct graph command adapter ownership comment
lunelson Jun 26, 2026
d4e17a4
Complete data model legibility verdict
lunelson Jun 26, 2026
73a7023
Update prompt resource topology test
lunelson Jun 26, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .agents/skills/ln-build/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,7 @@ After the build lands and verification passes, ask:
- [ ] Did this retire or create an assumption?
- [ ] Did this establish a new seam-level invariant?
- [ ] Did this change a frontier-level cross-cutting obligation or verification architecture layer?
- [ ] Did this complete the **last member frontier of an initiative (arc)** in `memory/PLAN.md` §Initiatives?
- [ ] Did this change the topology of a directory that owns a `README.md` (moved/renamed/retired files, changed dependency direction, completed or invalidated a migration note, or shipped a state previously described as pending)?

### If all answers are no
Expand Down Expand Up @@ -138,6 +139,7 @@ Update only the touched traceability items.
- If the change closes, blocks, or unblocks a frontier item, reflect that in `Sequencing`, the affected `Frontier Definitions` entry, or `Recently Completed`
- If the build changed a frontier-level cross-cutting obligation, update the affected frontier definition explicitly; do not hide the change behind bare traceability IDs
- Do not mirror detailed slice/card history into `memory/PLAN.md`; cards live in the scope file under `memory/cards/`. At most, the frontier definition may carry a lightweight `Current execution pointer` listing active scope file path(s).
- **Arc completion:** if this build completed the **last member frontier of an initiative (arc)** in `§Initiatives`, run that arc's **done-definition before** marking the arc done — including reconciling co-located topology READMEs and discharging any standing-obligation residue scoped to the arc (the residue that no future frontier would otherwise touch). Mark the arc `✓ done` only once the done-definition actually holds; if residue remains, the arc stays `◐ active` with the residue named.

2. **Assumptions**
- evidence answered it → update to `validated` or `invalidated`
Expand Down
19 changes: 18 additions & 1 deletion .agents/skills/ln-plan/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ argument-hint: "[feature or project area to plan]"

Plan the **rolling frontier**, not the whole historical timeline.

`memory/PLAN.md` is the canonical record of what's next. `docs/archive/PLAN_HISTORY.md` is the only sanctioned archive for retired plan history. `memory/cards/` is the sanctioned derivative location for prepared scope cards; one file per concern, named `<frontier-id>--<slug>.md` (or `dev--<slug>.md`, `tooling--<slug>.md`, `docs--<slug>.md` for non-frontier work). Scope files are not canonical planning state. Do not invent other sidecar plan docs, milestone ledgers, or alternate memory locations without explicit permission.
`memory/PLAN.md` is the canonical record of what's next. `docs/archive/PLAN_HISTORY.md` is the only sanctioned archive for retired plan history. `memory/cards/` is the sanctioned derivative location for prepared scope cards; one file per concern, named `<frontier-id>--<slug>.md` (or `dev--<slug>.md`, `tooling--<slug>.md`, `docs--<slug>.md` for non-frontier work). Scope files are not canonical planning state. Do not invent other sidecar plan docs, milestone ledgers, or alternate memory locations without explicit permission. The one sanctioned exception is the in-`PLAN.md` `## Initiatives` section (see [§Initiatives (arcs)](#initiatives-arcs)) — it lives inside the canonical file, not as a sidecar, and is not a new tracker/branch altitude.

## Frontier vs slice vocabulary

Expand All @@ -25,6 +25,7 @@ The vertical-slicing instinct still applies at planning time: frontier items sho
Prefer the conflict-resistant mature shape:

- `Context` — short rolling narrative for re-entry
- `Initiatives` — *optional*; thin arc index when an architectural through-line spans several frontiers (see [§Initiatives (arcs)](#initiatives-arcs))
- `Sequencing` — small, frequently edited ordering/status references by stable frontier id
- `Frontier Definitions` — relatively stable per-frontier definitions keyed by stable id
- `Recently Completed` — last 2-3 completed frontier items only
Expand Down Expand Up @@ -107,6 +108,22 @@ Do not split one frontier item into several new PLAN entries just because execut

But do not let anti-fragmentation erase cross-cutting architecture. If a subsystem or mechanism spans multiple frontier items and is not getting its own frontier id, thread it explicitly through the affected frontier definitions as an obligation in Objective, Acceptance, Verification, or a dedicated cross-cutting note.

### Initiatives (arcs)

Anti-fragmentation keeps the frontier list flat, but a flat list loses the **through-line** of an architectural initiative that deliberately spans several frontiers (e.g. populate-then-weed-then-lock a skill substrate, or build a capability spine across planes). When that happens the initiative's "why" and its "done" survive only as a SPEC decision dependency chain — which records *events*, not a roster — so "was this captured thoroughly?" becomes a reconstruction job, and trailing cleanup can orphan when no future frontier's blast radius touches it.

An **initiative (arc)** is the answer, and it is **not** a new tracking altitude: frontiers stay 1:1 with Linear issues and branches (`AGENTS.md`), Graphite stacks still mirror frontier dependencies, and arcs get no issue or branch of their own. An arc is a thin legibility + completability index living in the in-`PLAN.md` `## Initiatives` section. Reach for one only when a through-line genuinely spans ≥2 frontiers and would otherwise be invisible; a single-frontier effort does not need an arc.

Each arc entry stays thin:

- **id + status** (`✓ done` / `◐ active` / planned)
- **Goals** — the through-line in 1–3 bullets (the user-facing "why")
- **Members** — the frontier ids that compose it, with per-member status
- **Done-definition** — the arc-level completion test, which **must** include reconciliation of co-located topology READMEs and discharge of any standing-obligation residue scoped to the arc
- **Anchors** — the SPEC decision/assumption ids the arc rests on

`ln-plan` creates and updates arcs (and the member roster as frontiers are added/retired); `ln-sync` closes them and verifies the done-definition actually holds; `ln-build` fires the arc-completion check when a build lands the last member frontier (see each skill). The done-definition is what closes the "standing obligation rides the triggering frontier = never" hole: arc completion is itself a trigger.

### Sequencing vs definition edits

When priorities change, edit `Sequencing` first. Do not move or rewrite frontier definitions merely to reorder work.
Expand Down
3 changes: 3 additions & 0 deletions .agents/skills/ln-sync/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,7 @@ Rules:
- keep dependency diagrams limited to active / next frontier ids
- keep enough `Why now / unlocks` context that a fresh thread can understand frontier ordering without reading the full archive
- do not archive handoffs, refactor plans, or sync reports
- reconcile the `## Initiatives` (arc) index if present: refresh each arc's member roster and per-member status against `Sequencing`, and **close an arc only when its done-definition actually holds** — including reconciliation of co-located topology READMEs and discharge of any standing-obligation residue scoped to the arc. An arc whose members are all done but whose trailing README/residue cleanup is outstanding is **not** done; keep it `◐ active` with the residue named. Retire a fully-closed arc to a one-line `Recently Completed`-style note (or drop it) rather than carrying its full block indefinitely.

### 5. Drift and ontology check

Expand All @@ -158,6 +159,7 @@ Scan recent code / commits for:
- verification strategy that is present in canonical docs or frontier definitions but absent from `memory/SPEC.md` §Verification Design
- chosen module/API shapes or seam obligations from `ln-design` output that active frontier work still depends on
- **topology READMEs under `src/**/` out of sync with reality**: SPEC decision IDs cited in a README that this sync just renumbered or retired; named files/modules that have moved, been renamed, or been retired; dependency-direction assertions that no longer match actual imports; layout sketches whose entries no longer match the directory's contents; migration notes describing state that has since shipped or been abandoned (see `AGENTS.md` §topology READMEs)
- **arcs (`## Initiatives`) out of sync**: an arc marked done whose done-definition does not actually hold (outstanding topology-README reconciliation or undischarged residue); an arc roster missing a member frontier that clearly belongs to the through-line; an active multi-frontier through-line visible in the SPEC decision chain but absent from the arc index; a completed arc still carrying a full block long after closure

### 6. Garbage-collect derivative artifacts

Expand Down Expand Up @@ -204,6 +206,7 @@ Before finishing, perform a cross-skill preservation check:
- What cross-cutting obligations would disappear because they are carried only by links, not by live rows or frontier definitions?
- Would they know which temporary sweep ledgers are still live, which promoted rows still keep those ledgers open, and why those rows sequence where they do?
- Do any topology READMEs under `src/**/` still cite SPEC IDs or describe topology this sync just changed? Reconcile those READMEs as part of the sync, not as a follow-up.
- If a multi-frontier through-line exists, would they see it as an arc in `§Initiatives` with an honest done-definition, or would they have to reconstruct it from the SPEC decision chain?

If any answer is non-empty, sync is incomplete.

Expand Down
31 changes: 15 additions & 16 deletions .oxlintrc.json
Original file line number Diff line number Diff line change
Expand Up @@ -26,41 +26,40 @@
}
},
{
"files": ["src/renderers/**/*.ts", "src/renderers/**/*.tsx"],
"files": ["src/workspace/**/*.ts", "src/workspace/**/*.tsx"],
"rules": {
"no-restricted-imports": [
"error",
{
"patterns": [
{
"group": ["**/.pi/**", "**/app/**", "**/rpc/**", "**/web/**", "**/db/**"],
"message": "D52-L: renderers/ must not import adapter, transport, or db layers."
"group": [
"**/.pi/**",
"**/app/**",
"**/db/**",
"**/graph/**",
"**/projections/**",
"**/rpc/**",
"**/session/**",
"**/web/**"
],
"message": "D52-L: workspace/ is a cwd-owned leaf; it must not import domain or adapter layers."
}
]
}
]
}
},
{
"files": ["src/workspace/**/*.ts", "src/workspace/**/*.tsx"],
"files": ["src/agents/contexts/**/*.ts", "src/agents/contexts/**/*.tsx"],
"rules": {
"no-restricted-imports": [
"error",
{
"patterns": [
{
"group": [
"**/.pi/**",
"**/app/**",
"**/db/**",
"**/graph/**",
"**/projections/**",
"**/renderers/**",
"**/rpc/**",
"**/session/**",
"**/web/**"
],
"message": "D52-L: workspace/ is a cwd-owned leaf; it must not import domain or adapter layers."
"group": ["**/.pi/**", "**/app/**", "**/db/**", "**/rpc/**", "**/web/**"],
"message": "D52-L/D83-L: agents/contexts/ is model-facing render code; it must not import adapters, app entrypoints, transports, web, or db."
}
]
}
Expand Down
Loading
Loading