diff --git a/.obsidian/app.json b/.obsidian/app.json index 29071ff..7771298 100644 --- a/.obsidian/app.json +++ b/.obsidian/app.json @@ -3,8 +3,8 @@ "focusNewTab": true, "defaultViewMode": "preview", "livePreview": false, - "readableLineLength": false, - "strictLineBreaks": true, + "readableLineLength": true, + "strictLineBreaks": false, "propertiesInDocument": "hidden", "showLineNumber": true, "autoPairMarkdown": false, diff --git a/.obsidian/graph.json b/.obsidian/graph.json index 26e72fd..0552e4e 100644 --- a/.obsidian/graph.json +++ b/.obsidian/graph.json @@ -1,86 +1,86 @@ { "collapse-filter": true, - "search": "-path:\"99 meta/\" -path:\"05 journal\" ", + "search": "", "showTags": false, "showAttachments": false, "hideUnresolved": false, "showOrphans": true, - "collapse-color-groups": true, + "collapse-color-groups": false, "colorGroups": [ { - "query": "path:\"00 INBOX\" ", + "query": "tag:#ticket/grill ", "color": { "a": 1, - "rgb": 14822460 + "rgb": 14701138 } }, { - "query": "path:\"01 sources/claude/projects\" ", + "query": "tag:#ticket/prototype/hitl ", "color": { "a": 1, - "rgb": 5431413 + "rgb": 14701138 } }, { - "query": "path:\"01 sources\" ", + "query": "tag:#ticket/research ", "color": { "a": 1, - "rgb": 15624008 + "rgb": 5395168 } }, { - "query": "path:\"02 tags\" ", + "query": "tag:#ticket/prototype ", "color": { "a": 1, - "rgb": 16767070 + "rgb": 5419488 } }, { - "query": "path:\"03 index\" ", + "query": "file:/-map\\.md$", "color": { "a": 1, - "rgb": 16767070 + "rgb": 11657298 } }, { - "query": "path:\"04 notes\"", + "query": "tag:#ticket", "color": { "a": 1, - "rgb": 5366249 + "rgb": 14701233 } }, { - "query": "path:\"05 journal\" ", + "query": "tag:#spec ", "color": { "a": 1, - "rgb": 14890590 + "rgb": 9130720 } }, { - "query": "path:\"99 meta/attachments/bases\" ", + "query": "file:/-adr\\.md$", "color": { "a": 1, - "rgb": 7295476 + "rgb": 14725458 } }, { - "query": "path:\"99 meta\" ", + "query": "file:/-context\\.md$", "color": { "a": 1, - "rgb": 5330792 + "rgb": 14725458 } } ], "collapse-display": true, "showArrow": false, - "textFadeMultiplier": 0, - "nodeSizeMultiplier": 1.50364583333333, - "lineSizeMultiplier": 1, - "collapse-forces": true, - "centerStrength": 0.518713248970312, + "textFadeMultiplier": -3, + "nodeSizeMultiplier": 2.51132136678201, + "lineSizeMultiplier": 2.03949502595156, + "collapse-forces": false, + "centerStrength": 0, "repelStrength": 20, "linkStrength": 1, - "linkDistance": 250, - "scale": 0.06895927569691966, + "linkDistance": 500, + "scale": 0.07174458095508464, "close": false } \ No newline at end of file diff --git a/.obsidian/plugins/obsidian-minimal-settings/data.json b/.obsidian/plugins/obsidian-minimal-settings/data.json index df65caa..b45814a 100644 --- a/.obsidian/plugins/obsidian-minimal-settings/data.json +++ b/.obsidian/plugins/obsidian-minimal-settings/data.json @@ -29,6 +29,6 @@ "underlineExternal": true, "folding": true, "lineNumbers": true, - "readableLineLength": false, + "readableLineLength": true, "devBlockWidth": false } \ No newline at end of file diff --git a/.obsidian/workspace.json b/.obsidian/workspace.json index 1061a41..65090b7 100644 --- a/.obsidian/workspace.json +++ b/.obsidian/workspace.json @@ -4,17 +4,17 @@ "type": "split", "children": [ { - "id": "67558c78b7b7c0b1", + "id": "8b3b4cecfbd8922c", "type": "tabs", "children": [ { - "id": "b44e1f00ae10a059", + "id": "7ec442f7ed4ccd8b", "type": "leaf", "state": { - "type": "empty", + "type": "graph", "state": {}, - "icon": "lucide-file", - "title": "New tab" + "icon": "lucide-git-fork", + "title": "Graph view" } } ] @@ -126,7 +126,8 @@ } ], "direction": "horizontal", - "width": 300 + "width": 302.5, + "collapsed": true }, "right": { "id": "b3da14c43e9933fd", @@ -147,43 +148,43 @@ "table-editor-obsidian:Advanced Tables Toolbar": false } }, - "active": "b44e1f00ae10a059", + "active": "7ec442f7ed4ccd8b", "lastOpenFiles": [ - "AGENTS.md", - "projects/ai-artifacts/adr/0001-top-level-artifact-layout.md", - "projects/ai-artifacts/adr", - "tags", - "wiki", - "ai-artifacts", - "projects/ai-artifacts/CONTEXT.md", + "projects/dotfiles/082-pi-ui-bottom-anchored-editor-research.md", + "projects/skills/081-implement-skill-branch-worktree-policy-grill.md", + "projects/skills/080-implement-skill-ticket-scope-grill.md", + "projects/skills/079-implement-skill-matt-wayfinder-research.md", + "projects/skills/078-implement-skill-matt-code-review-research.md", + "projects/skills/077-implement-skill-matt-tdd-research.md", + "projects/skills/076-implement-skill-matt-to-tickets-research.md", + "projects/skills/075-implement-skill-matt-implement-research.md", + "projects/skills/074-implement-workflow-implementation-spec.md", + "projects/dotfiles/073-pi-ui-community-pi-packaging-research.md", + "projects/dotfiles/072-pi-ui-patched-pi-packaging-research.md", + "projects/dotfiles/071-pi-ui-final-deployment-verification-task.md", + "projects/dotfiles/070-pi-ui-flex-spacer-pi-patch-task.md", + "projects/dotfiles/068-pi-ui-compact-status-extension-task.md", + "projects/skills/069-implement-workflow-dependency-orchestration-grill.md", + "projects/dotfiles/068-pi-ui-permanent-implementation-task.md", + "projects/dotfiles/067-pi-ui-flex-spacer-bottom-anchor-prototype.md", + "projects/dotfiles/066-pi-ui-existing-extension-layout-survey-research.md", + "projects/dotfiles/065-pi-ui-bottom-anchored-editor-research.md", + "projects/skills/065-implement-workflow-codebase-design-research.md", + "projects/dotfiles/064-pi-ui-third-party-codex-quota-research.md", + "projects/dotfiles/063-pi-ui-customization-spec-task.md", + "projects/dotfiles/062-pi-ui-quota-status-prototype.md", + "projects/dotfiles/061-pi-ui-compact-status-prototype.md", + "projects/dotfiles/060-pi-ui-codex-quota-research.md", + "projects/dotfiles/059-pi-ui-context-token-data-research.md", + "projects/skills", + "projects/dotfiles/XXT3MvgC", + "projects/dotfiles", "projects/ai-artifacts", - "projects", - "CLAUDE.md", - "02 tags/wayland.md", - "02 tags/zettelkasten.md", - "02 tags/wishlist.md", - "02 tags/testing.md", - "02 tags/software design.md", - "02 tags/secrets management.md", - "02 tags/ricing.md", - "02 tags/pokemon.md", - "02 tags/obsidian.md", - "02 tags/nix.md", - "02 tags/neovim.md", - "02 tags/learning.md", - "02 tags/home-manager.md", - "02 tags/home automation.md", - "02 tags/git.md", - "02 tags/gaming.md", - "02 tags/evaluation.md", - "02 tags/cooking.md", - "01 sources/claude/projects/verify a module by extending a config off to the side.md", - "01 sources/claude/projects/verify a module by extending a config off to the side.md.tmp.30869.b8269dc3ef3c", - "01 sources/claude/projects/give a shared naming convention a single definition both sides call.md", - "01 sources/claude/projects/give a shared naming convention a single definition both sides call.md.tmp.30869.fa39e711987b", - "01 sources/claude/projects/emit an optional setting only when set so the framework's default stands.md", - "01 sources/claude/projects/emit an optional setting only when set so the framework's default stands.md.tmp.30869.7521163efa10", - "01 sources/claude/projects/decrypt at the trust boundary and hand an isolated consumer only named plaintext.md", - "01 sources/claude/projects/decrypt at the trust boundary and hand an isolated consumer only named plaintext.md.tmp.30869.1e166c3810b3" + "projects/skills/plan", + "projects/dotfiles/tasks", + "projects/dotfiles/spec", + "projects/dotfiles/adr", + "projects/skills/adr", + "projects/ai-artifacts/adr" ] } \ No newline at end of file diff --git a/AGENTS.md b/AGENTS.md index 30d6850..73aa66a 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -4,31 +4,93 @@ This repository stores agent-generated artifacts across projects. ## Layout -- Use `projects/` for project-specific artifacts. -- Use `projects//...` where `` is the lowercase basename of the project directory. -- Use project-specific subdirectories such as `spec/`, `tasks/`, or `adr/` when appropriate. -- Treat that list as examples, not as an exhaustive or required taxonomy. +- Use `projects//` for project-specific artifacts, where `` is the lowercase basename of the project directory. +- Keep every project directory flat. + Do not create artifact-type or effort subdirectories. +- Store an artifact's attachments beside its Markdown note. - Use `wiki/` for cross-project Markdown knowledge entries. - Do not write to `wiki/` unless the user explicitly instructs you to do so through a dedicated skill. - Keep `wiki/` flat. - Do not create subdirectories under `wiki/`. -- Use `tags/` for Markdown tag files. +- Use `tags/` for Tags. - Keep `tags/` flat. - Do not create subdirectories under `tags/`. - Do not create `.gitkeep` files. - Keep user-facing top-level artifact directories limited to `projects/`, `wiki/`, and `tags/`. - Hidden tool directories such as `.git/` and `.obsidian/` are allowed. -## Tags +## Naming conventions -- Tag files exist only to form clusters in the Obsidian graph view. -- Keep tag files free of semantic content. -- A trailing newline is acceptable. -- Link to tag files with explicit Obsidian wikilinks, such as `[[tags/example]]`. -- For project-specific artifacts, when they use tag links, place them on a compact first line. +### Global filename rules + +- File names must be lowercase unless an established tool convention requires otherwise. +- Spaces are allowed unless a location-specific rule says otherwise. + +### `projects/` + +- Name each Markdown artifact `-[-]-.md`. +- `NNN` is the next value after `.counter`. +- Pad `NNN` to at least three digits and expand naturally after `999`. +- Use the project slug as the scope slug for project-wide artifacts. +- Use the effort slug as the scope slug for effort-scoped artifacts. +- Do not use subsystem or topic slugs as scope slugs. +- Use the optional subject slug to distinguish multiple artifacts of one type within a scope. +- Use slugs for `scope-slug`, `subject-slug`, and `artifact-type`. + Slugs are lowercase and use hyphens instead of spaces. +- Let the creating skill define its artifact-type slug. + There is no vault-wide type registry. +- Name a project's context artifact `--context.md`. +- Name each attachment from its owning artifact's complete stem plus a numeric suffix, such as `042-wayfinder-layout-prototype-01.png`. + Attachments do not receive their own identifiers. +- Preserve an artifact's identifier when renaming its other filename components. +- Update every wikilink to a renamed artifact in the same change. + +### `wiki/` + +- Name each wiki entry with a lowercase human-readable filename. +- Spaces are allowed. +- Do not use artifact identifiers in wiki entry filenames. +- Do not apply project artifact naming rules to wiki entries. + +### `tags/` + +- Name each Tag with a lowercase tag name. +- Spaces are allowed. +- Do not use artifact identifiers in Tag filenames. + +## Identifier allocation + +- `.counter` at the vault root is the tracked source of the most recently allocated identifier. +- To allocate an identifier, increment `.counter` and persist it before creating the artifact. +- Never reuse an allocated identifier, including after failed creation or deletion. +- Do not lock `.counter`. +- After parallel creation, the coordinating agent must find duplicate identifiers, preserve pre-existing artifacts, renumber its current outputs, update their wikilinks, and advance `.counter` as needed. + +## Metadata and links + +- Store machine-readable artifact metadata in YAML frontmatter. +- Store Obsidian wikilinks in YAML as quoted text or quoted list values. +- Use a singular `parent` property for the earlier artifact that directly caused the current artifact to exist. +- Use a `blocked-by` list for zero or more upstream artifacts that must resolve before the current artifact can be acted on. +- Use bare wikilinks without display aliases. + +## Hashtags and Tags + +- Use Obsidian hashtags for note metadata through the YAML `tags` property. +- A Tag is a content-free Markdown note under `tags/` used only to form clusters in the Obsidian graph view. +- A trailing newline in a Tag is acceptable. +- Link to Tags with bare Obsidian wikilinks, such as `[[example]]`. - Do not define the internal structure of wiki entries yet. ## Gotchas - Do not apply project-specific artifact structure rules to wiki entries. Wiki entry structure is intentionally undecided. +- Context artifacts under `projects/` are normal identifier-bearing project artifacts. +They use the next value after `.counter`, not a reserved `000` prefix. +- Do not invent naming conventions for new directories. +The vault layout is fixed unless the user explicitly changes it. +- Wayfinder map artifacts under `projects/` still need the normal artifact-type suffix. +Use `-map.md`, not a filename that ends at the effort slug. +- Preserve `blocked-by` dependency links after blockers resolve. +Do not remove entries merely because a dependency is no longer actively blocking the next action. diff --git a/projects/dotfiles/047-pi-subagents-lifecycle-controls-task.md b/projects/dotfiles/047-pi-subagents-lifecycle-controls-task.md index 1dc334b..252b3fb 100644 --- a/projects/dotfiles/047-pi-subagents-lifecycle-controls-task.md +++ b/projects/dotfiles/047-pi-subagents-lifecycle-controls-task.md @@ -1,5 +1,7 @@ --- -status: open +status: claimed +claimed-by: "019fba91-eabf-76ae-b086-a37ac061d6e8" +claimed-at: "2026-08-01T14:05:41-04:00" parent: "[[027-pi-subagents-implementation-spec-task]]" blocked-by: - "[[046-pi-subagents-minimal-tracer-bullet-task]]"