@tyroneross/build-loop 0.30.3 → 0.35.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agents/plugins/marketplace.json +2 -2
- package/.claude-plugin/marketplace.json +4 -4
- package/.claude-plugin/plugin.json +1 -1
- package/.codex-plugin/plugin.json +1 -1
- package/AGENTS.md +11 -2
- package/README.md +8 -7
- package/agents/advisor.md +111 -0
- package/agents/alignment-checker.md +11 -0
- package/agents/assessment-orchestrator.md +1 -1
- package/agents/build-orchestrator.md +28 -33
- package/agents/fact-checker.md +1 -1
- package/agents/fix-critique.md +1 -1
- package/agents/independent-auditor.md +1 -1
- package/agents/overfitting-reviewer.md +1 -1
- package/agents/plan-critic.md +8 -6
- package/agents/promotion-reviewer.md +1 -1
- package/agents/retrospective-synthesizer.md +20 -3
- package/agents/scope-auditor.md +1 -1
- package/agents/security-reviewer.md +1 -1
- package/agents/self-improvement-architect.md +1 -1
- package/commands/{handoff.md → compose-handoff.md} +4 -4
- package/commands/{optimize.md → optimize-run.md} +1 -1
- package/commands/{agent-rally-point.md → rally-point.md} +3 -3
- package/commands/{research.md → research-run.md} +1 -1
- package/commands/setup-memory.md +32 -0
- package/commands/{plan-verify.md → verify-plan.md} +1 -1
- package/docs/agent-surface-policy.md +38 -20
- package/docs/memory-setup.md +19 -14
- package/hooks/_resolve_python.sh +28 -0
- package/hooks/closeout.sh +58 -0
- package/hooks/git/pre-push +69 -6
- package/hooks/hooks.json +34 -13
- package/hooks/post-push-closeout.sh +73 -0
- package/hooks/session-start-closeout.sh +69 -0
- package/hooks/session-start-memory.sh +27 -0
- package/hooks/session-start-plugin-heal.sh +33 -0
- package/hooks/test_closeout.sh +124 -0
- package/package.json +7 -4
- package/plugin-artifacts/codex/.codex-plugin/plugin.json +41 -0
- package/plugin-artifacts/codex/AGENTS.md +507 -0
- package/plugin-artifacts/codex/BUILD-ARTIFACT.md +5 -0
- package/plugin-artifacts/codex/LICENSE +202 -0
- package/plugin-artifacts/codex/README.md +404 -0
- package/plugin-artifacts/codex/docs/agent-surface-policy.md +63 -0
- package/plugin-artifacts/codex/references/advisor-dispatch-ladder.md +62 -0
- package/plugin-artifacts/codex/references/agent-role-taxonomy.md +135 -0
- package/plugin-artifacts/codex/references/autonomous-and-per-commit-modes.md +161 -0
- package/plugin-artifacts/codex/references/autonomy-config.md +231 -0
- package/plugin-artifacts/codex/references/capability-routing.md +182 -0
- package/plugin-artifacts/codex/references/codex-subagents.md +106 -0
- package/plugin-artifacts/codex/references/coordination-file-template.md +181 -0
- package/plugin-artifacts/codex/references/coordination-rules.md +283 -0
- package/plugin-artifacts/codex/references/dogfood-reload-checkpoint.md +112 -0
- package/plugin-artifacts/codex/references/halt-and-ask-protocol.md +102 -0
- package/plugin-artifacts/codex/references/implementer-envelope-schema.md +302 -0
- package/plugin-artifacts/codex/references/intent-capability-pack.md +257 -0
- package/plugin-artifacts/codex/references/intent-exploration-prompts.md +96 -0
- package/plugin-artifacts/codex/references/leadership.md +72 -0
- package/plugin-artifacts/codex/references/memory-systems.md +238 -0
- package/plugin-artifacts/codex/references/memory.md +299 -0
- package/plugin-artifacts/codex/references/model-tier-mapping.md +257 -0
- package/plugin-artifacts/codex/references/modular-systems-pack.md +96 -0
- package/plugin-artifacts/codex/references/phase-1-assess.md +231 -0
- package/plugin-artifacts/codex/references/phase-2-plan.md +78 -0
- package/plugin-artifacts/codex/references/phase-3-execute.md +49 -0
- package/plugin-artifacts/codex/references/phase-4-review.md +322 -0
- package/plugin-artifacts/codex/references/phase-5-iterate.md +71 -0
- package/plugin-artifacts/codex/references/phase-6-learn.md +56 -0
- package/plugin-artifacts/codex/references/recent-design-structures.md +274 -0
- package/plugin-artifacts/codex/references/research-trigger-policy.md +140 -0
- package/plugin-artifacts/codex/references/runtime-smoke-triggers.md +42 -0
- package/plugin-artifacts/codex/references/self-review.md +234 -0
- package/plugin-artifacts/codex/references/single-writer-commit-protocol.md +90 -0
- package/plugin-artifacts/codex/references/task-capture-policy.md +68 -0
- package/plugin-artifacts/codex/references/ui-io-contract.md +116 -0
- package/plugin-artifacts/codex/references/ui-spotcheck-protocol.md +65 -0
- package/plugin-artifacts/codex/skills/build-loop/SKILL.md +372 -0
- package/plugin-artifacts/codex/skills/build-loop/detect-plugins.mjs +82 -0
- package/plugin-artifacts/codex/skills/build-loop/eval-guide.md +65 -0
- package/plugin-artifacts/codex/skills/build-loop/fallbacks.md +549 -0
- package/plugin-artifacts/codex/skills/build-loop/phases/fact-check.md +42 -0
- package/plugin-artifacts/codex/skills/build-loop/phases/ui-validation.md +267 -0
- package/plugin-artifacts/codex/skills/build-loop/references/advisor-dispatch-ladder.md +62 -0
- package/plugin-artifacts/codex/skills/build-loop/references/apple-native-planning.md +439 -0
- package/plugin-artifacts/codex/skills/build-loop/references/autonomous-and-per-commit-modes.md +161 -0
- package/plugin-artifacts/codex/skills/build-loop/references/capability-routing.md +182 -0
- package/plugin-artifacts/codex/skills/build-loop/references/codex-subagents.md +106 -0
- package/plugin-artifacts/codex/skills/build-loop/references/coordination.md +161 -0
- package/plugin-artifacts/codex/skills/build-loop/references/correction-aware-capture.md +177 -0
- package/plugin-artifacts/codex/skills/build-loop/references/independent-auditor.md +72 -0
- package/plugin-artifacts/codex/skills/build-loop/references/intent-capability-pack.md +257 -0
- package/plugin-artifacts/codex/skills/build-loop/references/intent-exploration-prompts.md +96 -0
- package/plugin-artifacts/codex/skills/build-loop/references/leadership.md +72 -0
- package/plugin-artifacts/codex/skills/build-loop/references/memory.md +299 -0
- package/plugin-artifacts/codex/skills/build-loop/references/modular-systems-pack.md +96 -0
- package/plugin-artifacts/codex/skills/build-loop/references/output-style.md +129 -0
- package/plugin-artifacts/codex/skills/build-loop/references/pay-it-forward-arch.md +98 -0
- package/plugin-artifacts/codex/skills/build-loop/references/phase-1-assess.md +231 -0
- package/plugin-artifacts/codex/skills/build-loop/references/phase-2-plan.md +78 -0
- package/plugin-artifacts/codex/skills/build-loop/references/phase-3-execute.md +49 -0
- package/plugin-artifacts/codex/skills/build-loop/references/phase-4-review.md +322 -0
- package/plugin-artifacts/codex/skills/build-loop/references/phase-5-iterate.md +71 -0
- package/plugin-artifacts/codex/skills/build-loop/references/phase-6-learn.md +56 -0
- package/plugin-artifacts/codex/skills/build-loop/references/recent-design-structures.md +274 -0
- package/plugin-artifacts/codex/skills/build-loop/references/refactor-history/ASSESSMENT.md +85 -0
- package/plugin-artifacts/codex/skills/build-loop/references/refactor-history/STANDALONE_TEST_RUN.md +149 -0
- package/plugin-artifacts/codex/skills/build-loop/references/refactor-history/scenarios/01-simple-bugfix.md +32 -0
- package/plugin-artifacts/codex/skills/build-loop/references/refactor-history/scenarios/02-ui-build-with-iteration.md +48 -0
- package/plugin-artifacts/codex/skills/build-loop/references/refactor-history/scenarios/03-multi-failure-escalation.md +60 -0
- package/plugin-artifacts/codex/skills/build-loop/references/refactor-history/scenarios/04-ui-build-ibr-absent.md +51 -0
- package/plugin-artifacts/codex/skills/build-loop/references/refactor-history/scenarios/05-refactor-navgator-absent.md +71 -0
- package/plugin-artifacts/codex/skills/build-loop/references/refactor-history/scenarios/06-recurring-bug-debugger-absent.md +52 -0
- package/plugin-artifacts/codex/skills/build-loop/references/refactor-history/trace-comparison.md +202 -0
- package/plugin-artifacts/codex/skills/build-loop/references/self-recursive-dev.md +77 -0
- package/plugin-artifacts/codex/skills/build-loop/references/self-review.md +234 -0
- package/plugin-artifacts/codex/skills/build-loop/references/ui-io-contract.md +116 -0
- package/plugin-artifacts/codex/skills/build-loop/scanners/audit-design-rules.mjs +476 -0
- package/plugin-artifacts/codex/skills/build-loop/scanners/require-visual-evidence.mjs +239 -0
- package/plugin-artifacts/codex/skills/build-loop/templates/backlog-item.md +35 -0
- package/plugin-artifacts/codex/skills/build-loop/templates/codex-worker-prompt.md +100 -0
- package/plugin-artifacts/codex/skills/build-loop/templates/ui-subagent-prompt.md +179 -0
- package/plugin-artifacts/codex/skills/build-loop/templates/ux-fix-plan.md +40 -0
- package/scripts/_paths.py +59 -13
- package/scripts/build_codex_plugin_artifact.py +314 -0
- package/scripts/check_cache_sync.py +1 -1
- package/scripts/install_memory.py +11 -3
- package/scripts/prune_plugin_cache.py +225 -11
- package/scripts/sync_navgator_lessons.py +25 -0
- package/scripts/sync_plugin_cache.py +66 -36
- package/skills/agent-rally-point/SKILL.md +1 -1
- package/skills/agent-rally-watcher/SKILL.md +1 -1
- package/skills/build-loop/SKILL.md +11 -155
- package/skills/build-loop/references/advisor-dispatch-ladder.md +62 -0
- package/skills/build-loop/references/autonomous-and-per-commit-modes.md +161 -0
- package/skills/build-loop/references/capability-routing.md +4 -3
- package/skills/build-loop/references/codex-subagents.md +8 -0
- package/skills/build-loop/references/coordination.md +1 -1
- package/skills/build-loop/references/intent-capability-pack.md +88 -1
- package/skills/build-loop/references/memory.md +17 -2
- package/skills/build-loop/references/phase-1-assess.md +13 -0
- package/skills/build-loop/references/phase-2-plan.md +2 -1
- package/skills/build-loop/references/phase-3-execute.md +4 -2
- package/skills/build-loop/references/phase-4-review.md +12 -0
- package/skills/build-loop/references/phase-6-learn.md +1 -1
- package/skills/build-loop/references/self-review.md +4 -2
- package/skills/build-loop/templates/codex-worker-prompt.md +45 -34
- package/skills/handoff/SKILL.md +3 -3
- package/skills/loop-builder/SKILL.md +98 -0
- package/skills/loop-builder/presets/active-project-evidence.yaml +97 -0
- package/skills/loop-builder/presets/generic-artifact-loop.yaml +95 -0
- package/skills/loop-builder/presets/presentation-audit.yaml +96 -0
- package/skills/loop-builder/presets/research-synthesis.yaml +96 -0
- package/skills/loop-builder/presets/source-ingestion-raw-data-audit.yaml +96 -0
- package/skills/loop-builder/references/spec-format.md +80 -0
- package/skills/loop-builder/scripts/loop_builder.py +346 -0
- package/skills/model-tiering/SKILL.md +65 -40
- package/skills/optimize/SKILL.md +2 -2
- package/skills/plan-verify/SKILL.md +1 -1
- package/skills/plugin-builder/references/distribution.md +8 -0
- package/skills/research/SKILL.md +33 -6
- package/skills/runtime-parity-verification/SKILL.md +51 -0
- package/skills/spec-writing/SKILL.md +19 -0
- package/templates/memory/README.md +65 -0
- package/templates/memory/charter.md.template +46 -0
- package/templates/memory/manifest.json +24 -4
- package/codex-skills/debug-loop/SKILL.md +0 -18
- package/codex-skills/handoff/SKILL.md +0 -22
- package/codex-skills/knowledge/SKILL.md +0 -21
- package/codex-skills/optimize/SKILL.md +0 -18
- package/codex-skills/research/SKILL.md +0 -18
- /package/commands/{knowledge-review.md → review-knowledge.md} +0 -0
package/skills/research/SKILL.md
CHANGED
|
@@ -53,10 +53,37 @@ Produces a repo-grounded research packet without committing to implementation. U
|
|
|
53
53
|
[What could go wrong, what's uncertain]
|
|
54
54
|
|
|
55
55
|
## Confidence
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
56
|
+
|
|
57
|
+
Rate each axis high/medium/low, then set Overall to the floor of the three —
|
|
58
|
+
and never above Evidence quality when the packet rests on external claims:
|
|
59
|
+
|
|
60
|
+
- Context coverage — how much of the relevant repo was actually read
|
|
61
|
+
- Verification coverage — share of material claims checked against repo or source
|
|
62
|
+
- Evidence quality — strength of the sources behind external claims (rubric below)
|
|
63
|
+
- Overall — the floor of the above
|
|
64
|
+
|
|
65
|
+
### Source & claim rubric (apply to every external claim)
|
|
66
|
+
|
|
67
|
+
Tier each source: **T1** official docs / standards / primary data · **T2**
|
|
68
|
+
recognized experts / official eng blogs · **T3** reputable industry press ·
|
|
69
|
+
**T4** forums / SEO / unattributed. Then grade the claim's corroboration and
|
|
70
|
+
mark it inline:
|
|
71
|
+
|
|
72
|
+
- ✅ verified — ≥2 *independent* T1/T2 sources agree (independent = different
|
|
73
|
+
orgs, not mirrors or one syndicated wire)
|
|
74
|
+
- ⚠️ partial — exactly one T1/T2, or only T3/T4 sources
|
|
75
|
+
- ❓ inferred — single source, T4 only, or your own inference
|
|
76
|
+
|
|
77
|
+
A claim's confidence can never exceed its corroboration.
|
|
78
|
+
|
|
79
|
+
### Verify before stating (high-risk / max_accuracy)
|
|
80
|
+
|
|
81
|
+
For security, auth, payment, legal, medical, finance, production, or any
|
|
82
|
+
`max_accuracy` packet: decompose each external claim into atomic checkable
|
|
83
|
+
facts (a number, a version, an API signature, a citation) and verify each
|
|
84
|
+
against a source before the packet states it. An unverifiable atom is labeled
|
|
85
|
+
❓ or removed — never stated as fact. This applies the cite-or-block rule in
|
|
86
|
+
`references/research-trigger-policy.md` claim-by-claim.
|
|
60
87
|
|
|
61
88
|
## Next action
|
|
62
89
|
[Concrete first step — could be "run /build-loop" or "investigate X further"]
|
|
@@ -70,10 +97,10 @@ Produces a repo-grounded research packet without committing to implementation. U
|
|
|
70
97
|
|
|
71
98
|
## Integration
|
|
72
99
|
|
|
73
|
-
- Standalone: `/build-loop:research [topic]`
|
|
100
|
+
- Standalone: `/build-loop:research-run [topic]`
|
|
74
101
|
- From build-loop: orchestrator routes RESEARCH-intent requests here instead of the full loop
|
|
75
102
|
- During normal build-loop runs: `scripts/research_trigger.py` decides whether this skill should run, which depth to use, where to persist the packet, and whether current/external claims are blocked until cited. See `references/research-trigger-policy.md`.
|
|
76
|
-
- After packet: user decides — `/build-loop:run` to implement, `/build-loop:optimize` to optimize, or shelve
|
|
103
|
+
- After packet: user decides — `/build-loop:run` to implement, `/build-loop:optimize-run` to optimize, or shelve
|
|
77
104
|
|
|
78
105
|
## State
|
|
79
106
|
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: runtime-parity-verification
|
|
3
|
+
description: Use in Phase 4/5 (Validate/Iterate) for ANY change to a user-visible flow — web, macOS, iOS, agent, or CLI/TUI — before claiming "done". Verifies the RUNNING app's core flow by cross-checking the rendered/queryable UI against the backing source-of-truth (DB/API/daemon/tool-state), screen-independently. Triggers — "verify it works", "confirm the fix", "does X actually work", "nothing happens when I…", "not showing", "shows empty/wrong data", uiTarget != null, or any "action does nothing / data not displaying / stale projection" symptom. Compile-green and a passing unit test do NOT satisfy this; neither does a screenshot alone.
|
|
4
|
+
user-invocable: false
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Runtime Parity Verification
|
|
8
|
+
|
|
9
|
+
**The recurring failure this prevents:** an agent ships UI/feature work, reports "compiles green / tests pass / committed," and never confirms the **running** app's core flow actually works — or confirms it only by **screenshot**, which is screen-dependent and gets silently deferred (e.g. the user's display locks). The whole "X doesn't work / isn't showing / shows mock/empty despite real data / stale projection" bug class is a **divergence between what the UI renders and the authoritative backend state.** One cheap, headless check catches the entire family.
|
|
10
|
+
|
|
11
|
+
## The invariant to assert
|
|
12
|
+
|
|
13
|
+
> For the user's core flow, the **rendered/queryable UI state must equal the authoritative backend state.**
|
|
14
|
+
> - If the backend holds N items and the UI shows 0 / "empty" → **FAIL** (projection diverged).
|
|
15
|
+
> - If an action is supposed to create/change state, assert **both** the backend delta **and** the UI reflecting it.
|
|
16
|
+
|
|
17
|
+
This is stronger than "did it render" (which UI validators check). It is also stronger than "build + tests pass" (which never exercises the running flow). It must be **screen-independent** so it cannot be skipped when no display is available.
|
|
18
|
+
|
|
19
|
+
## Platform recipes — source-of-truth (left) ⇄ UI probe (right)
|
|
20
|
+
|
|
21
|
+
| Platform | Authoritative source-of-truth | Screen-independent UI probe |
|
|
22
|
+
|---|---|---|
|
|
23
|
+
| **Web** | API response JSON / DB row count | Host browser or `ui-validator` / IBR scan; assert via `data-testid` selectors |
|
|
24
|
+
| **macOS** (AppKit/SwiftUI) | backend store / daemon via CLI or socket query | **`native-ax-driver`** Accessibility tree (cursor-free). Reference impl: easy-terminal `tools/smoke_launch.py` |
|
|
25
|
+
| **iOS / watchOS** | backend / store | simulator AX via `idb ui describe-all` or XCUITest queries |
|
|
26
|
+
| **Agent / LLM app** | tool-result or persisted state | the agent's returned/rendered output — assert the claim matches the actual tool/state, not just that text was produced |
|
|
27
|
+
| **CLI / TUI** | process / file / db state | captured stdout / TUI buffer |
|
|
28
|
+
|
|
29
|
+
## Procedure
|
|
30
|
+
|
|
31
|
+
1. **Identify the core flow** changed (the thing a user does: launch a thing, submit a form, see a list, run an action).
|
|
32
|
+
2. **Capture source-of-truth** before and (if the flow mutates) after the action — a query that does NOT go through the UI layer.
|
|
33
|
+
3. **Probe the UI headlessly** with the platform driver and extract the rendered state (counts, presence/absence of an empty state, the new item).
|
|
34
|
+
4. **Assert parity**: rendered == source-of-truth. On a mutating flow, assert the backend delta AND the UI reflecting it.
|
|
35
|
+
5. **Encode it as a per-repo smoke** (a script that returns non-zero on divergence). **Validate the smoke is real**: confirm it returns non-zero on a known-broken state, not just zero on green — a check that cannot fail is worthless.
|
|
36
|
+
6. **Gate on it**: run the smoke before any "done" claim. Never substitute compile-green, a passing unit test, or a screenshot.
|
|
37
|
+
|
|
38
|
+
## Anti-patterns (each one shipped a real bug)
|
|
39
|
+
|
|
40
|
+
- "Build is green, committed — done." → compile ≠ runtime; never exercised the flow.
|
|
41
|
+
- "Here's a screenshot, looks right." → screen-dependent; deferred when the screen locks; can't diff against truth.
|
|
42
|
+
- "The UI rendered something." → rendering ≠ correct data; an empty state renders fine while the backend has 100 rows.
|
|
43
|
+
- Verifying only the backend (CLI/API works) without the UI, or only the UI without the backing truth — the bug lives in the **gap between them**.
|
|
44
|
+
|
|
45
|
+
## Build-loop integration
|
|
46
|
+
|
|
47
|
+
- **Phase 4 Review sub-step B / Phase 5 Iterate**: when `uiTarget != null` OR the diff touches a user-visible flow, a runtime parity check is **required**. The existing drivers do the probing — web: `ui-validator`; macOS: `native-ax-driver` / IBR `scan_macos`; iOS: `idb`. THIS skill adds the missing step: **cross-check the probe against source-of-truth**, and keep a validated per-repo smoke.
|
|
48
|
+
- **Phase 4 sub-step G (`verification-before-completion`)**: for app/UI changes, "confirm output" includes the runtime parity smoke, not only test/build/lint.
|
|
49
|
+
- The `verify` skill ("run the app and observe behavior") is the manual counterpart; this skill is the automatable, source-of-truth-anchored form.
|
|
50
|
+
|
|
51
|
+
Origin lesson: build-loop-memory `lessons/2026-06-08-pattern-runtime-ui-source-of-truth-parity-verification.md` (easy-terminal launch/no-pane bug — UI projection diverged from daemon, missed across a whole UI pass because verification was compile-green + screenshot-only).
|
|
@@ -314,6 +314,24 @@ If no UI surface is in scope, write "N/A: no UI surface."
|
|
|
314
314
|
|
|
315
315
|
---
|
|
316
316
|
|
|
317
|
+
### Item 18 — Dispatch tier per work item (WP-B)
|
|
318
|
+
|
|
319
|
+
**Prompt:** Assign `dispatch_tier:` per work item — one of `script | haiku | sonnet | opus | frontier` — plus a one-line justification. The tier names which executor the orchestrator dispatches; the justification states why that tier fits the work's nature. `frontier` requests the Frontier tier (resolves to Fable via `scripts/model_overrides.py`) for a work item whose generative reasoning compounds — plan synthesis / re-planning / a decomposition call where a wrong answer ripples downstream. It routes to the Advisor dispatch ladder (`references/advisor-dispatch-ladder.md`); use it sparingly, only on genuinely high-stakes generative work.
|
|
320
|
+
|
|
321
|
+
**Eligibility test for `script` (ALL must hold):** machine-checkable output; fully enumerable inputs; the tool exists OR is ≤~50 LOC plus a colocated test. If any fails, the task needs a model tier (judgment), not a script. Escalate on evidence (2 failures or surfaced ambiguity) with the failure evidence attached; never patch a script mid-run to absorb ambiguity.
|
|
322
|
+
|
|
323
|
+
**Effect:** `plan_verify.py` runs two ADVISORY checks (never block, user-confirmed 2026-06-09): `tier-sanity-judgment-on-script` (a judgment-flavored task pinned to `script` — rigidity) and `tier-sanity-mechanical-on-opus` (a rote task pinned to `opus` — waste). Both are WARN flags in the report, surfaced for the author to reconsider.
|
|
324
|
+
|
|
325
|
+
**How to check:**
|
|
326
|
+
|
|
327
|
+
```bash
|
|
328
|
+
grep -n "dispatch_tier:" docs/plans/<feature-slug>.md
|
|
329
|
+
```
|
|
330
|
+
|
|
331
|
+
Each value must be exactly one of `script | haiku | sonnet | opus | frontier`. Omit the field for an item whose tier is obvious from context; the checks fire only on a declared tier that fights its task description. (`frontier` never trips a sanity WARN — it is the top judgment tier, never a "waste" smell.)
|
|
332
|
+
|
|
333
|
+
---
|
|
334
|
+
|
|
317
335
|
## Frontmatter fields used by routing
|
|
318
336
|
|
|
319
337
|
These fields appear in plan or chunk frontmatter and affect orchestrator routing decisions. They are validated by `scripts/plan_verify.py`.
|
|
@@ -322,6 +340,7 @@ These fields appear in plan or chunk frontmatter and affect orchestrator routing
|
|
|
322
340
|
|-------|------|--------|
|
|
323
341
|
| `risk_reason:` | one of 5 canonical strings | Routes chunk to `tier: thinking` regardless of `synthesis_dimensions` count (see Item 16). |
|
|
324
342
|
| `modifies_api: true\|false` | boolean | When `true`, the orchestrator runs a mandatory scope-auditor gate before Phase 3 dispatch. Any public function, component, type, route, or CLI-flag signature change qualifies. When set without a companion `scope_auditor_status:` field in the plan body, `plan_verify.py` emits a WARN (`scope-audit-required`) to surface the missing audit trail. |
|
|
343
|
+
| `dispatch_tier:` | one of `script\|haiku\|sonnet\|opus\|frontier` | Names the executor tier for the work item (Item 18). `frontier` resolves to Fable (`scripts/model_overrides.py`) and routes the item to the Advisor dispatch ladder for high-stakes generative work. `plan_verify.py` emits an advisory WARN when the tier fights the task: judgment on `script` (`tier-sanity-judgment-on-script`) or a mechanical task on `opus` (`tier-sanity-mechanical-on-opus`). `frontier` never trips a WARN. Never blocks. |
|
|
325
344
|
|
|
326
345
|
---
|
|
327
346
|
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# build-loop-memory — public seed (scaffolding only)
|
|
2
|
+
|
|
3
|
+
This folder is the **self-contained seed** for a build-loop-memory store. It is the
|
|
4
|
+
single place that holds everything build-loop ships for memory setup: the generic
|
|
5
|
+
templates, the privacy allowlist (`manifest.json`), and this layout spec.
|
|
6
|
+
|
|
7
|
+
**What ships vs. what does not.** The memory *store* itself is **private and never
|
|
8
|
+
ships** — it holds personal lessons, project decisions, raw artifacts, and operator
|
|
9
|
+
paths. Only this **scaffolding** ships in the public plugin: generic `*.template`
|
|
10
|
+
files + an allowlisted manifest. `scripts/install_memory.py` *materializes* the store
|
|
11
|
+
from this seed at a **separate root** (`$BUILD_LOOP_MEMORY_ROOT` → legacy
|
|
12
|
+
`~/dev/git-folder/build-loop-memory` → fresh `~/.build-loop-memory`), seeding only
|
|
13
|
+
missing files (idempotent, never overwrites).
|
|
14
|
+
|
|
15
|
+
## Files in this seed (all of them)
|
|
16
|
+
|
|
17
|
+
| File | Role |
|
|
18
|
+
|------|------|
|
|
19
|
+
| `manifest.json` | Privacy allowlist + the complete structure spec. `install_memory.py --validate-seed` rejects any seed file not allowlisted here, and scans for secret/PII deny-patterns. |
|
|
20
|
+
| `constitution.md.template` | First-run rule scaffold → `constitution.md` in the store. |
|
|
21
|
+
| `MEMORY.md.template` | Global memory-index scaffold → `MEMORY.md` in the store. |
|
|
22
|
+
| `charter.md.template` | Project-charter scaffold (North Star + commander's-intent + invariants) → `charter.md`. Placeholder bodies; filled per project at run time. |
|
|
23
|
+
| `README.md` | This document. |
|
|
24
|
+
|
|
25
|
+
Empty directories are **not** shipped (git can't track them, and the manifest is
|
|
26
|
+
strict-allowlist); they are **generated** by `install_memory.py` at setup. The full
|
|
27
|
+
target layout is below and is declared machine-readably in `manifest.json` →
|
|
28
|
+
`generated`.
|
|
29
|
+
|
|
30
|
+
## Store layout that install_memory.py generates
|
|
31
|
+
|
|
32
|
+
```
|
|
33
|
+
<memory-root>/ # private, separate root — NEVER the plugin cache
|
|
34
|
+
├── constitution.md # from constitution.md.template
|
|
35
|
+
├── MEMORY.md # from MEMORY.md.template
|
|
36
|
+
├── charter.md # from charter.md.template (optional)
|
|
37
|
+
├── indexes/ # rebuildable local indexes
|
|
38
|
+
└── projects/
|
|
39
|
+
├── README.md # generated project-lane guide
|
|
40
|
+
└── <slug>/ # one per project (--ensure-project <slug>)
|
|
41
|
+
├── raw/ # raw-source lanes:
|
|
42
|
+
│ ├── documents/ data/ db/ runtime/
|
|
43
|
+
│ └── agent-artifacts/ artifacts/ files/
|
|
44
|
+
├── apps/ assets/ architecture/ context/
|
|
45
|
+
├── decisions/ docs/ features/ formats/
|
|
46
|
+
├── indexes/ lessons/ plugins/ product/
|
|
47
|
+
├── prompts/ research/ semantic/ skills/
|
|
48
|
+
└── sources/ testing/ tradeoffs/
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
`raw/` lanes (7): documents, data, db, runtime, agent-artifacts, artifacts, files.
|
|
52
|
+
Per-project topic dirs (20): apps, assets, architecture, context, decisions, docs,
|
|
53
|
+
features, formats, indexes, lessons, plugins, product, prompts, raw, research,
|
|
54
|
+
semantic, skills, sources, testing, tradeoffs.
|
|
55
|
+
|
|
56
|
+
## Setup
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
python3 scripts/install_memory.py # bootstrap store + seed missing files
|
|
60
|
+
python3 scripts/install_memory.py --ensure-project foo # add projects/foo/ scaffold
|
|
61
|
+
python3 scripts/install_memory.py --check # status, no writes
|
|
62
|
+
python3 scripts/install_memory.py --validate-seed # validate THIS seed (allowlist + deny-scan)
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
The store is the durable, private half; this seed is the public, structure-only half.
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# Project Charter — {{PROJECT}}
|
|
2
|
+
|
|
3
|
+
The durable North Star + posture + invariants + key architecture decisions that
|
|
4
|
+
outlive any single run. Canonical here in memory; mirrored to `.build-loop/charter.md`
|
|
5
|
+
each run. Facts ACCRETE: each carries provenance (`inferred` until user-confirmed
|
|
6
|
+
or stable across N runs) and, where it locks a decision, the falsifier that would
|
|
7
|
+
unseat it (decision-quality rule 8).
|
|
8
|
+
|
|
9
|
+
This is a template — replace the bodies with the project's actual content. Depth
|
|
10
|
+
scales by `stakes`: a low-stakes skill/agent/toy needs none of this; a thin charter
|
|
11
|
+
(North Star + posture) suits medium-stakes web/mobile; a high-stakes system fills
|
|
12
|
+
every section and graduates risk-naming non-goals to enforced invariants.
|
|
13
|
+
|
|
14
|
+
## North Star
|
|
15
|
+
|
|
16
|
+
- **Purpose**: <what this product is for and who it serves>
|
|
17
|
+
- **Primary users**: <roles affected>
|
|
18
|
+
- **Core jobs**: <the tasks users rely on most>
|
|
19
|
+
|
|
20
|
+
## Posture (commander's intent)
|
|
21
|
+
|
|
22
|
+
- **audience**: <who> — provenance: inferred
|
|
23
|
+
- **stakes**: <low|medium|high> — provenance: inferred
|
|
24
|
+
- **priority_order**: <ordered subset of security/reliability/speed/cost/simplicity/polish>
|
|
25
|
+
- notes: <free-text expressiveness the fixed vocab can't carry>
|
|
26
|
+
- **acceptable_tradeoffs**: <what is OK to cut under pressure>
|
|
27
|
+
- **non_goals**: <what is never cut>
|
|
28
|
+
- <at stakes:high, a non_goal that names a REAL risk is an ENFORCED invariant>
|
|
29
|
+
|
|
30
|
+
## Invariants
|
|
31
|
+
|
|
32
|
+
Stable rules cited by advisory judges via stable IDs (mirror the constitution
|
|
33
|
+
shape). At `stakes: high`, risk-naming entries are deterministically enforced.
|
|
34
|
+
|
|
35
|
+
- **INV-<DOMAIN>/<name>**: <rule body> — provenance: <inferred|user-confirmed>
|
|
36
|
+
- falsifier: <the observation that would unseat this>
|
|
37
|
+
|
|
38
|
+
## Key architecture decisions
|
|
39
|
+
|
|
40
|
+
- **<decision>**: <what was decided and why> — provenance: <inferred|user-confirmed>
|
|
41
|
+
- falsifier: <what would prove it wrong; the revisit trigger>
|
|
42
|
+
|
|
43
|
+
<!-- Provenance legend: `inferred` (LLM-derived, not yet confirmed) graduates to
|
|
44
|
+
`user-confirmed` on explicit user statement OR to `stable` after N
|
|
45
|
+
unchallenged runs. The run is the single writer (from canonical); a user
|
|
46
|
+
hand-edit of the repo mirror promotes to canonical authored_by:user. -->
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schema_version": "1.0.0",
|
|
3
3
|
"kind": "build-loop-memory-public-seed",
|
|
4
|
-
"seed_version": "2026-06-
|
|
5
|
-
"description": "
|
|
4
|
+
"seed_version": "2026-06-12",
|
|
5
|
+
"description": "Self-contained, privacy-safe seed for a fresh build-loop-memory store. Ships the generic templates + this manifest + README; install_memory.py materializes the store at a separate private root. This manifest allowlists only generic templates/docs and declares (in 'generated') the complete directory structure install_memory.py creates. It must not include personal lessons, project decisions, raw files, indexes, or operator-specific content.",
|
|
6
6
|
"sources": [
|
|
7
7
|
{
|
|
8
8
|
"source": "constitution.md.template",
|
|
@@ -15,6 +15,18 @@
|
|
|
15
15
|
"target": "MEMORY.md",
|
|
16
16
|
"required": true,
|
|
17
17
|
"purpose": "Generic global-memory index scaffold for first-run installs."
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"source": "charter.md.template",
|
|
21
|
+
"target": "charter.md",
|
|
22
|
+
"required": false,
|
|
23
|
+
"purpose": "Generic project-charter scaffold (North Star + commander's-intent posture + invariants). Placeholder bodies only; filled per project by the run (WP-F)."
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"source": "README.md",
|
|
27
|
+
"target": "README.md",
|
|
28
|
+
"required": false,
|
|
29
|
+
"purpose": "Human-readable seed + complete layout documentation (allowlisted so --validate-seed passes)."
|
|
18
30
|
}
|
|
19
31
|
],
|
|
20
32
|
"generated": [
|
|
@@ -26,14 +38,22 @@
|
|
|
26
38
|
"target": "projects/README.md",
|
|
27
39
|
"purpose": "Generic project-scoped memory lane guide generated by install_memory.py."
|
|
28
40
|
},
|
|
41
|
+
{
|
|
42
|
+
"target": "projects/<slug>/",
|
|
43
|
+
"purpose": "Per-project memory lane, created by --ensure-project <slug>."
|
|
44
|
+
},
|
|
29
45
|
{
|
|
30
46
|
"target": "projects/<slug>/raw/{documents,data,db,runtime,agent-artifacts,artifacts,files}/.gitkeep",
|
|
31
|
-
"purpose": "Empty raw-source lane placeholders created
|
|
47
|
+
"purpose": "Empty raw-source lane placeholders (7 lanes) created when --ensure-project is passed."
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"target": "projects/<slug>/{apps,assets,architecture,context,decisions,docs,features,formats,indexes,lessons,plugins,product,prompts,raw,research,semantic,skills,sources,testing,tradeoffs}/",
|
|
51
|
+
"purpose": "Per-project topic lanes (20) — canonical structure spec, mirrors install_memory.py PROJECT_TOPIC_DIRS."
|
|
32
52
|
}
|
|
33
53
|
],
|
|
34
54
|
"privacy": {
|
|
35
55
|
"classification": "scaffolding-only",
|
|
36
|
-
"rule": "The public build-loop package ships templates and
|
|
56
|
+
"rule": "The public build-loop package ships templates, this manifest, and the README only. Personal memory files, private repository contents, project-specific decisions, raw artifacts, generated indexes, and local operator paths are excluded. Empty directories are generated at install time, never shipped.",
|
|
37
57
|
"deny_patterns": [
|
|
38
58
|
"(?i)BEGIN (OPENSSH|RSA|DSA|EC) PRIVATE KEY",
|
|
39
59
|
"(?i)\\b(api[_-]?key|secret|password|token)\\s*[:=]\\s*['\\\"][^'\\\"]{8,}",
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: debug-loop
|
|
3
|
-
description: "Main Build Loop debugging entrypoint. Use for root-cause analysis, failing fixes, crashes, exceptions, broken behavior, and validation failures that need an iterative diagnose-fix-verify loop."
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
<!-- SPDX-FileCopyrightText: 2025-2026 Tyrone Ross, Jr <46267523+tyroneross@users.noreply.github.com> | SPDX-License-Identifier: Apache-2.0 -->
|
|
7
|
-
|
|
8
|
-
# Debug Loop
|
|
9
|
-
|
|
10
|
-
This is the public Codex entrypoint for Build Loop debugging. The canonical
|
|
11
|
-
implementation remains internal:
|
|
12
|
-
|
|
13
|
-
```text
|
|
14
|
-
../skills/debug-loop/SKILL.md
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
Start with diagnosis, use evidence to identify root cause, apply the smallest
|
|
18
|
-
targeted fix, and verify with the repo's native tests or runtime checks.
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: handoff
|
|
3
|
-
description: "Main Build Loop handoff entrypoint. Use to compose a durable, fixed-template handoff from the current build-loop run state — intent, goal, live checklist, git state, queues, and gotchas — so a fresh session can resume without losing context. Optionally launches a fresh session in the stable checkout."
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
<!-- SPDX-FileCopyrightText: 2025-2026 Tyrone Ross, Jr <46267523+tyroneross@users.noreply.github.com> | SPDX-License-Identifier: Apache-2.0 -->
|
|
7
|
-
|
|
8
|
-
# Handoff
|
|
9
|
-
|
|
10
|
-
This is the public Codex entrypoint for Build Loop run handoffs. The canonical
|
|
11
|
-
implementation remains internal:
|
|
12
|
-
|
|
13
|
-
```text
|
|
14
|
-
../skills/handoff/SKILL.md
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
Compose the handoff from real `.build-loop/` state (intent, goal, `state.json`
|
|
18
|
-
checklist, git status/log, the followup/backlog/ux-queue/issues queues, and
|
|
19
|
-
recorded gotchas) into the fixed template. Carry the live checklist across the
|
|
20
|
-
boundary verbatim so the next session resumes without re-deriving state. The
|
|
21
|
-
optional launch step targets the stable checkout, never a worktree that may be
|
|
22
|
-
garbage-collected.
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: knowledge
|
|
3
|
-
description: "Main Build Loop knowledge entrypoint. Use when recording decisions, ADRs, lessons, procedural memory, or repo-local knowledge that should be durable across future runs — AND when reviewing existing memory: surfacing the review queue, detecting decision rot, finding stale procedures, or resolving open conflicts."
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
<!-- SPDX-FileCopyrightText: 2025-2026 Tyrone Ross, Jr <46267523+tyroneross@users.noreply.github.com> | SPDX-License-Identifier: Apache-2.0 -->
|
|
7
|
-
|
|
8
|
-
# Knowledge
|
|
9
|
-
|
|
10
|
-
This is the public Codex entrypoint for Build Loop knowledge capture. The
|
|
11
|
-
canonical implementation remains internal:
|
|
12
|
-
|
|
13
|
-
```text
|
|
14
|
-
../skills/knowledge/SKILL.md # capture: decisions, ADRs, lessons, procedures
|
|
15
|
-
../skills/knowledge-review/SKILL.md # review: review queue, decision rot, stale procedures, open conflicts
|
|
16
|
-
```
|
|
17
|
-
|
|
18
|
-
Keep captures factual, scoped to the current repo or decision, and validated
|
|
19
|
-
against the files or commands that prove the lesson. Use the review path when
|
|
20
|
-
asked to surface what's gone stale or conflicting in existing memory rather than
|
|
21
|
-
to record something new.
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: optimize
|
|
3
|
-
description: "Main Build Loop optimization entrypoint. Use when the user wants to make something faster, cheaper, smaller, simpler, or better against a measurable metric."
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
<!-- SPDX-FileCopyrightText: 2025-2026 Tyrone Ross, Jr <46267523+tyroneross@users.noreply.github.com> | SPDX-License-Identifier: Apache-2.0 -->
|
|
7
|
-
|
|
8
|
-
# Optimize
|
|
9
|
-
|
|
10
|
-
This is the public Codex entrypoint for Build Loop optimization. The canonical
|
|
11
|
-
implementation remains internal:
|
|
12
|
-
|
|
13
|
-
```text
|
|
14
|
-
../skills/optimize/SKILL.md
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
Define the metric first, identify factors, measure each run, keep only changes
|
|
18
|
-
that improve the metric, and revert changes that do not.
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: research
|
|
3
|
-
description: "Main Build Loop research entrypoint. Use for pre-build research, option evaluation, API/framework investigation, and repo-grounded decision packets before implementation."
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
<!-- SPDX-FileCopyrightText: 2025-2026 Tyrone Ross, Jr <46267523+tyroneross@users.noreply.github.com> | SPDX-License-Identifier: Apache-2.0 -->
|
|
7
|
-
|
|
8
|
-
# Research
|
|
9
|
-
|
|
10
|
-
This is the public Codex entrypoint for Build Loop research. The canonical
|
|
11
|
-
implementation remains internal:
|
|
12
|
-
|
|
13
|
-
```text
|
|
14
|
-
../skills/research/SKILL.md
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
Ground claims in the repo first, then use current external docs only when the
|
|
18
|
-
decision depends on unstable or third-party behavior.
|
|
File without changes
|