@tyroneross/build-loop 0.30.3 → 0.34.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 +9 -0
- 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 +5 -4
- 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 +499 -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 +101 -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 +297 -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 +77 -0
- package/plugin-artifacts/codex/references/phase-3-execute.md +47 -0
- package/plugin-artifacts/codex/references/phase-4-review.md +320 -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 +297 -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 +77 -0
- package/plugin-artifacts/codex/skills/build-loop/references/phase-3-execute.md +47 -0
- package/plugin-artifacts/codex/skills/build-loop/references/phase-4-review.md +320 -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 +96 -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 +1 -1
- 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 +41 -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
|
@@ -8,6 +8,19 @@
|
|
|
8
8
|
|
|
9
9
|
Build-loop maintains one canonical long-term memory store at `~/dev/git-folder/build-loop-memory/`. Every build reads canonical indexes/folders; writes go to exactly one lane based on scope.
|
|
10
10
|
|
|
11
|
+
### Recall-optimized memory discipline
|
|
12
|
+
|
|
13
|
+
Canonical reference: `build-loop-memory/references/2026-06-11-memory-discipline-prompt.md` (`version: 2026-06-11.1`). Apply it to every non-trivial memory-relevant read or write.
|
|
14
|
+
|
|
15
|
+
Operational contract:
|
|
16
|
+
|
|
17
|
+
- Recall first for significant repo work, debugging, planning, and any memory write. Read the store-root `INDEX.md` first, then project context such as `projects/<slug>/context/CONTEXT.md` and generated `CURRENT.*`, plus `constitution.md` / `MEMORY.md` where present. Search `indexes/INDEX.jsonl`, scan `chronology.jsonl`, read the matching lane, and verify any remembered file/flag/API/script still exists before relying on it.
|
|
18
|
+
- Write only durable facts that aid future recall: decisions + rationale, lessons, reusable references, gotchas, experiment results, product opportunities, and durable operational patterns. Do not write restated code, git-derivable facts, transient status, or handoff-only state.
|
|
19
|
+
- Before writing, search `indexes/INDEX.jsonl` for an existing slug/title, update instead of duplicating, then check `indexes/duplicates.jsonl` after indexing. Use title and `description` as the recall hooks.
|
|
20
|
+
- Do not hand-write project decisions. Use `scripts/write_decision/__main__.py`; it writes the decision lane and updates that lane's `INDEX.md` / update ledger. Generated master-index reachability is still incomplete for new `projects/<slug>/decisions/` files, so verify decisions through `memory_facade` or the decision lane until the scanner/map split is reconciled.
|
|
21
|
+
- Current reference gap: `memory_writer.py` has `research` as a project sublane but not `references`; `reference_capture` writes to `projects/<slug>/research/`, while `build-loop-memory/scripts/rebuild_memory_indexes.py` scans `references/` and not `research/`. For generated-index recall today, write `type: reference` content under `projects/<slug>/lessons/references/`, or update both writer and indexer to agree on `references` or `research`.
|
|
22
|
+
- After any memory write, run the relevant host index/check step when mutation is in scope and verify the entry is reachable from the proper recall surface: `INDEX.jsonl` for generated-index lanes, decision lane/index or `memory_facade` for decisions, or the host system's equivalent.
|
|
23
|
+
|
|
11
24
|
**Cross-project memory**: `build-loop-memory/lessons/` plus the sibling top-level lanes `design/`, `debugging/`, and `product/`
|
|
12
25
|
|
|
13
26
|
- Applies across every project this user builds.
|
|
@@ -87,7 +100,7 @@ last_updated_at: "ISO8601 UTC"
|
|
|
87
100
|
---
|
|
88
101
|
```
|
|
89
102
|
|
|
90
|
-
### Writer side — use
|
|
103
|
+
### Writer side — use the canonical writer for normal memory writes
|
|
91
104
|
|
|
92
105
|
**Top-level (cross-project) write** — `--scope top-level` routes to `build-loop-memory/lessons/` (or a sibling lane when `--file <lane>/x.md` is used):
|
|
93
106
|
|
|
@@ -121,7 +134,7 @@ python3 ${CLAUDE_PLUGIN_ROOT}/scripts/memory_writer.py \
|
|
|
121
134
|
--body-file /tmp/memory-body.md
|
|
122
135
|
```
|
|
123
136
|
|
|
124
|
-
The writer auto-detects `source_repo` from the workdir's git remote, appends a row to the lane-local `INDEX.jsonl`, appends a row to the global update ledger at `indexes/updates.jsonl`, and (on update) preserves `created_at` + `applied_in_repos` so cross-repo validation history survives edits.
|
|
137
|
+
The writer auto-detects `source_repo` from the workdir's git remote, appends a row to the lane-local `INDEX.jsonl`, appends a row to the global update ledger at `indexes/updates.jsonl`, and (on update) preserves `created_at` + `applied_in_repos` so cross-repo validation history survives edits. Direct writes are repair/fallback work only: use them only when no canonical writer exists or the current task is explicitly a memory-system repair, then run the host index/check step and verify reachability.
|
|
125
138
|
|
|
126
139
|
### Reader side — surface peer writes via INDEX.jsonl
|
|
127
140
|
|
|
@@ -233,6 +246,8 @@ Run once after this version of build-loop is installed; the migration completes
|
|
|
233
246
|
|
|
234
247
|
Every build-loop run appends a single milestone record at **Review-G** via `scripts/append_milestone.py`. Each record captures what shipped and the repo HEAD sha at write time.
|
|
235
248
|
|
|
249
|
+
The milestone (durable `milestones.jsonl` in build-loop-memory) is **distinct from** `state.json.runs[]`, which Phase 6 Learn scans for pain signals. The orchestrator's Review-G writes both; an **inline run or the closeout** writes neither unless it calls them explicitly. So at run-close, in addition to the milestone, record the run for Learn with `python3 scripts/append_run.py --workdir "$PWD" --run-id <id> --goal "..." --outcome <done|partial|blocked>` (append-only, idempotent on `run_id`; capture `--manual-intervention "<phase>:<note>"` for any step the user had to re-prompt). Without it, inline work never reaches the `runs[] >= 3` Learn threshold. See `references/phase-6-learn.md` §Detect.
|
|
250
|
+
|
|
236
251
|
JSONL contract (frozen — sibling staleness-check reads this):
|
|
237
252
|
|
|
238
253
|
```
|
|
@@ -152,6 +152,19 @@
|
|
|
152
152
|
returned depth (`light`/`standard`/`deep`) or record why it was unavailable.
|
|
153
153
|
If `blocks_final_claims: true`, final current/external/API claims need
|
|
154
154
|
citations or an explicit unavailable/unverified note.
|
|
155
|
+
|
|
156
|
+
**Reference capture (default-on, any phase/mode):** whenever this run fetches
|
|
157
|
+
external info (WebSearch/WebFetch/Context7/api-registry/official docs) AND uses
|
|
158
|
+
it in a decision, persist the EXTRACTED findings (not raw HTML) via
|
|
159
|
+
`python3 "${CLAUDE_PLUGIN_ROOT}/scripts/reference_capture.py" capture --workdir
|
|
160
|
+
"$PWD" --run-id "<run_id>" --topic "<topic>" --findings "<distilled>" --source
|
|
161
|
+
"<url>|<T1..T4>" --decision "<what it informed>" --json`. Routes through the
|
|
162
|
+
canonical memory writer into the project `research` lane with `retrieved_at` +
|
|
163
|
+
a per-content-class `refresh_after` horizon; the store is uncommitted by
|
|
164
|
+
default. `context_bootstrap.py` flags references past their horizon as
|
|
165
|
+
`stale-needs-refresh` in the brief (`packet.reference_freshness`, advisory).
|
|
166
|
+
Do not ask — capture is a default. Policy: `references/research-trigger-policy.md`
|
|
167
|
+
§"Reference Capture".
|
|
155
168
|
14a. **Active task surface**: when the user asks what remains, when Phase 1
|
|
156
169
|
surfaces open work, or before queue-continuation decisions, run:
|
|
157
170
|
|
|
@@ -70,7 +70,7 @@ Readback format (one line, mandatory, before the plan body):
|
|
|
70
70
|
- Exit 2 → treat as verifier outage; log and proceed with `plan-critic` alone plus a state.json warning.
|
|
71
71
|
- `parallel-decision-record` is a BLOCKER: plans that name independent / parallel-safe multi-chunk work must include `parallel_batch:` or `parallel_skipped_reason:`.
|
|
72
72
|
- Full rule list and contract: `${CLAUDE_PLUGIN_ROOT}/skills/plan-verify/SKILL.md`.
|
|
73
|
-
9. **Dispatch `plan-critic` agent** (non-deterministic checks): pass the plan + the JSON from step 8 so the critic doesn't re-derive deterministic findings. Critic surfaces alternatives-considered, MECE scope, marker adequacy, headline drift.
|
|
73
|
+
9. **Dispatch `plan-critic` agent** (non-deterministic checks): pass the plan + the JSON from step 8 so the critic doesn't re-derive deterministic findings. Critic surfaces alternatives-considered, MECE scope, marker adequacy, headline drift. The critic's emitted severity caps at WARN. **Gating is stakes-conditional (decided by the orchestrator, not the critic):** on high-stakes plans (`synthesisDensity > 5`, `triggers.riskSurfaceChange`, `stakes >= medium`, or `dispatch_tier: frontier`) those WARNs are **blocking** — Phase 2 does not finish until each is revised or explicitly overridden; otherwise they are **advisory** (today's behavior). The gate advances on objective signals only, never self-reported confidence. See `references/advisor-dispatch-ladder.md`.
|
|
74
74
|
10. **Emit gaps-readback** using the combined output of steps 8–9. Populate the one-line readback prefix before presenting the plan. Both passes must complete before the plan is shown to the user — never present a plan without the readback line.
|
|
75
75
|
11. **Dispatch `scope-auditor` agent** (Plan→Execute boundary): pass the plan + extracted commit table (with `modifies_api` per commit). The auditor is Opus + read-only; it traces every caller-site of every modified-API symbol via project-wide grep, classifies callers as in-scope / out-of-scope, and emits a `## Caller Audit (Scope Auditor)` JSON section appended to the plan. Verdict `scope_gap_found` requires plan revision (absorb missing callers into the right commit's owned-files) before Phase 3, OR explicit acceptance in `state.json.scopeGapAccepted[]` with rationale. Skip ONLY when the plan has zero `modifies_api` entries (doc-only commits). Prevents the fan-out scope-blindness defect class — see `agents/scope-auditor.md`.
|
|
76
76
|
|
|
@@ -242,6 +242,8 @@ Runs only when all prior sub-steps pass OR when iteration cap is hit. Writes fin
|
|
|
242
242
|
|
|
243
243
|
**No-critical/high exit gate (QM v0.13.0 Piece 3, BLOCKING).** Before this final pass may report `pass`, collect every reviewer findings JSON produced this run (independent-auditor + security-reviewer) and run `python3 ${CLAUDE_PLUGIN_ROOT}/scripts/review_finding_gate.py --findings-json <each.json> --json`. It normalizes legacy (`major→high`, `minor→medium`, `info→low`; security `CRITICAL|HIGH|MEDIUM|LOW` case-insensitively; ambiguous→`high`) and returns `{pass, blocking_count, ...}`, exit 1 when any `critical`/`high` finding is open (not `closed` + `closure_proof`). **Exit 1 → the final pass is blocked; route the blocking findings to Phase 5 Iterate** (the fixed 5-iteration cap cannot finalize with an open critical/high). Exit 0 → proceed. Medium/low never block here — they route through the ux-queue/followup with explicit disposition; they are never silently skipped.
|
|
244
244
|
|
|
245
|
+
**Judgment-dispatch gate (BLOCKING on stakes-gated runs).** The advisor/auditor ladders RECORD which rung fired but nothing ENFORCED it, so an inline run (skill-as-methodology, no orchestrator dispatch) silently sat at the inline-Opus floor and the Frontier judgment never happened (observed: agent-rally-point v0.1.2 ran 16 commits with 0 Fable dispatches until the user asked why). Before this final pass may report `pass`, run `python3 ${CLAUDE_PLUGIN_ROOT}/scripts/judgment_gate.py --workdir "$PWD" --run-id <this run> --agent-tool-available <true|false> --json`. Pass `--run-id` so stakes/statuses/ledger are scoped to THIS run only (never a stale top-level trigger or a prior run's ledger row — the gate reads stakes from the run record); omit it to default to the latest `runs[]` entry. Pass `--agent-tool-available false` only for a nested orchestrator / no-Agent-tool context. Stakes-conditional (mirrors the ladders): no stakes trigger → `pass`; stakes fired + `auditor_status`/`advisor_status` shows a real Frontier/peer dispatch → `pass`; stakes fired + the inline floor (`fallback:inline-opus` / `not-run:parent-must-dispatch` / unrecorded) with the Agent tool reachable → **exit 1, `fail`**. **Exit 1 → the run is NOT review-complete: dispatch the independent-auditor (and, for a stakes-gated Phase 2, the advisor) to Frontier, then re-run.** Also fails on an `agent-ledger.jsonl` `verify`/`author` action recorded at a non-frontier tier. This closes the inline-substitution hole — the same class as the inline self-audit masquerading as the independent auditor.
|
|
246
|
+
|
|
245
247
|
Final report sections, in this order:
|
|
246
248
|
|
|
247
249
|
- `## Done` — every verified pass + every Auto-Resolve `auto` item, with one-line evidence each.
|
|
@@ -256,6 +258,16 @@ or explicitly say the evidence was unavailable and the claim is unverified. If
|
|
|
256
258
|
`packet_path` is non-null, add a compact `research_packet:` evidence item to
|
|
257
259
|
`## Done` or `## Status markers`.
|
|
258
260
|
|
|
261
|
+
Reference-capture report field (mirrors the researchGate citation contract):
|
|
262
|
+
every run reports one `references captured:` line in `## Done` or `## Status
|
|
263
|
+
markers` — `references captured: N (<files>)` when one or more external fetches
|
|
264
|
+
informed a decision and were captured via the canonical writer, `none — no
|
|
265
|
+
external fetch informed a decision` when no web/doc fetch fed a decision, or
|
|
266
|
+
`skipped: <rationale>` when a fetch informed a decision but capture was
|
|
267
|
+
intentionally not run. This makes the default-on capture trigger
|
|
268
|
+
(`references/research-trigger-policy.md` §"Reference Capture") accountable in the
|
|
269
|
+
run report instead of advisory-only.
|
|
270
|
+
|
|
259
271
|
Before emitting the final report, write the draft to a temp file and run BOTH linters (orthogonal — structural vs style):
|
|
260
272
|
|
|
261
273
|
```bash
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
Quick flow:
|
|
16
16
|
|
|
17
17
|
1. **Detect** — dispatch `recurring-pattern-detector` (Haiku). Reads **two signal sources**:
|
|
18
|
-
- **Signal 1**: `.build-loop/state.json.runs[]` — emits `phase_failure`, `manual_intervention`, and `security_finding` patterns (real pain signals; `diagnostic_repeat` and `file_churn` were removed to prevent skill sprawl).
|
|
18
|
+
- **Signal 1**: `.build-loop/state.json.runs[]` — emits `phase_failure`, `manual_intervention`, and `security_finding` patterns (real pain signals; `diagnostic_repeat` and `file_churn` were removed to prevent skill sprawl). **`runs[]` is written by the orchestrator's Review-G, so an INLINE run (skill-as-methodology, no orchestrator dispatch) records nothing and is invisible to Learn.** Any run-close path that did not go through Review-G — inline runs, the memory closeout — MUST record the run with `python3 scripts/append_run.py --workdir "$PWD" --run-id <id> --goal "..." --outcome <done|partial|blocked> [--manual-intervention "<phase>:<note>"] [--phase "<id>:<status>"]` (append-only, idempotent on `run_id`). Without it, inline work never accrues toward the `runs[] >= 3` threshold and recurring inline pain (e.g. the user re-prompting for a skipped step) never becomes a `manual_intervention` pattern.
|
|
19
19
|
- **Signal 2**: `.build-loop/proposals/enforce-from-retro/*.md` (the post-push retrospective's enforce-candidates) — emits `enforce_recurrence` patterns when the same normalized candidate signature appears across ≥ 2 distinct run-ids. The orchestrator may cite `python3 scripts/enforce_retro_signals.py --workdir "$PWD" --json` as pre-computed input to the agent. This delivers "anything prompted/needed repeatedly → enforce" **across** sessions, not just within one.
|
|
20
20
|
2. **Filter** — keep only `confidence: high` or `count >= 4`; manual interventions at lower threshold. Dedupe against existing active/experimental skill names. Cap 2 artifacts per scan.
|
|
21
21
|
3. **Draft** — for each kept pattern, dispatch `self-improvement-architect` (Sonnet). Writes to `.build-loop/skills/experimental/<name>/SKILL.md` with an A/B Experiment section including `run_id` and `co_applied_experimental_artifacts[]` schema.
|
|
@@ -90,8 +90,10 @@ Deep mode digests include an `## Apply plan` section that separates SAFE-to-auto
|
|
|
90
90
|
|
|
91
91
|
`python3 scripts/install_self_review.py install` writes two plists to `~/Library/LaunchAgents/`:
|
|
92
92
|
|
|
93
|
-
- `com.
|
|
94
|
-
- `com.
|
|
93
|
+
- `com.build-loop.selfreview-light.plist` — daily at 09:00, invokes `scripts/self_review_run.sh light`
|
|
94
|
+
- `com.build-loop.selfreview-deep.plist` — weekly Sunday at 03:00, invokes `scripts/self_review_run.sh deep`
|
|
95
|
+
|
|
96
|
+
`install` and `uninstall` also unload + remove any jobs still installed under the pre-rename legacy labels (developer-prefixed `*.buildloop.selfreview-*`), so an existing machine transitions to the neutral labels on the next run.
|
|
95
97
|
|
|
96
98
|
Both jobs write output to `.build-loop/self-review/launchd-{light,deep}.log`.
|
|
97
99
|
|
|
@@ -4,48 +4,20 @@
|
|
|
4
4
|
|
|
5
5
|
You are a Codex worker inside a Build Loop run. You are not alone in the codebase. Do not revert edits made by others; adapt around them and report conflicts.
|
|
6
6
|
|
|
7
|
-
##
|
|
7
|
+
## Static Contract
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
## Ownership
|
|
12
|
-
|
|
13
|
-
Owns:
|
|
14
|
-
- <exact files/directories this worker may edit>
|
|
15
|
-
|
|
16
|
-
Does not own:
|
|
17
|
-
- <files/directories/responsibilities this worker must not edit>
|
|
18
|
-
|
|
19
|
-
## Context
|
|
20
|
-
|
|
21
|
-
- Goal: <goal from .build-loop/goal.md>
|
|
22
|
-
- Intent: <north star/update intent relevant to this task>
|
|
23
|
-
- Current state: <short facts from assessment>
|
|
24
|
-
- Dependencies: <upstream tasks or known constraints>
|
|
9
|
+
This section is intentionally stable across Codex worker prompts. Keep it before task-specific material so repeated worker dispatches share the longest stable prefix.
|
|
25
10
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
- <function/route/schema/component/CLI/doc contract to preserve or expose>
|
|
29
|
-
|
|
30
|
-
## Implementation Rules
|
|
11
|
+
### Implementation Rules
|
|
31
12
|
|
|
32
13
|
- Keep the change scoped to owned files.
|
|
33
14
|
- Prefer the repo's existing patterns over new abstractions.
|
|
34
15
|
- Do not add dependencies unless the lead explicitly assigned that.
|
|
35
16
|
- Surface pre-existing issues separately from task changes.
|
|
36
17
|
- If ownership is unclear, stop and report the conflict instead of broadening scope.
|
|
18
|
+
- Run assigned validation when feasible; if validation is not feasible, explain why and what the lead should run.
|
|
37
19
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
Run if feasible:
|
|
41
|
-
|
|
42
|
-
```bash
|
|
43
|
-
<validation command>
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
If validation is not feasible, explain why and what the lead should run.
|
|
47
|
-
|
|
48
|
-
## Return Format
|
|
20
|
+
### Return Format
|
|
49
21
|
|
|
50
22
|
Changed files:
|
|
51
23
|
- <path>: <what changed>
|
|
@@ -59,7 +31,7 @@ Integration notes:
|
|
|
59
31
|
Unresolved risks:
|
|
60
32
|
- <risk or "none known">
|
|
61
33
|
|
|
62
|
-
|
|
34
|
+
### decision_ledger (REQUIRED when plan has synthesis_dimensions)
|
|
63
35
|
|
|
64
36
|
When the originating plan includes a `synthesis_dimensions:` block, your return envelope MUST include a `decision_ledger` array with one entry per dimension. Each entry documents *why* the chosen value was selected — not just *what* was applied. Empty array `[]` is only valid when the plan has no `synthesis_dimensions` block.
|
|
65
37
|
|
|
@@ -87,3 +59,38 @@ Example (two entries for placement and cta_tier dimensions):
|
|
|
87
59
|
```
|
|
88
60
|
|
|
89
61
|
Full schema: `references/implementer-envelope-schema.md` §"decision_ledger in detail".
|
|
62
|
+
|
|
63
|
+
## Variable Task Packet
|
|
64
|
+
|
|
65
|
+
This section changes for each dispatch. Keep it after the static contract.
|
|
66
|
+
|
|
67
|
+
### Task
|
|
68
|
+
|
|
69
|
+
<one concrete outcome>
|
|
70
|
+
|
|
71
|
+
### Ownership
|
|
72
|
+
|
|
73
|
+
Owns:
|
|
74
|
+
- <exact files/directories this worker may edit>
|
|
75
|
+
|
|
76
|
+
Does not own:
|
|
77
|
+
- <files/directories/responsibilities this worker must not edit>
|
|
78
|
+
|
|
79
|
+
### Context
|
|
80
|
+
|
|
81
|
+
- Goal: <goal from .build-loop/goal.md>
|
|
82
|
+
- Intent: <north star/update intent relevant to this task>
|
|
83
|
+
- Current state: <short facts from assessment>
|
|
84
|
+
- Dependencies: <upstream tasks or known constraints>
|
|
85
|
+
|
|
86
|
+
### Interface Contract
|
|
87
|
+
|
|
88
|
+
- <function/route/schema/component/CLI/doc contract to preserve or expose>
|
|
89
|
+
|
|
90
|
+
### Validation
|
|
91
|
+
|
|
92
|
+
Run if feasible:
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
<validation command>
|
|
96
|
+
```
|
package/skills/handoff/SKILL.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: handoff
|
|
3
|
-
description: "Compose a complete, durable build-loop handoff document from the current run state, and optionally launch a fresh session with it injected. Use when crossing a context boundary (context limit, planned restart, worktree GC). Triggers: 'hand off', 'handoff', 'new session', 'context limit', 'restart', 'fresh session', '/build-loop:handoff'."
|
|
3
|
+
description: "Compose a complete, durable build-loop handoff document from the current run state, and optionally launch a fresh session with it injected. Use when crossing a context boundary (context limit, planned restart, worktree GC). Triggers: 'hand off', 'handoff', 'new session', 'context limit', 'restart', 'fresh session', '/build-loop:compose-handoff'."
|
|
4
4
|
user-invocable: true
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -55,7 +55,7 @@ Emits a JSON envelope `{document, sources, errors, ts}` for programmatic use.
|
|
|
55
55
|
|
|
56
56
|
## Usage — `--launch` (fresh session)
|
|
57
57
|
|
|
58
|
-
The command surface (`/build-loop:handoff --launch`) handles this. The skill provides
|
|
58
|
+
The command surface (`/build-loop:compose-handoff --launch`) handles this. The skill provides
|
|
59
59
|
the doc; the command layer handles host-specific launch.
|
|
60
60
|
|
|
61
61
|
**What `--launch` does:**
|
|
@@ -90,5 +90,5 @@ orchestrator already writes. Tests: `scripts/handoff/test_handoff.py` (13 tests)
|
|
|
90
90
|
|
|
91
91
|
The skill provides **structured data + instructions**. The host coding agent's LLM
|
|
92
92
|
interprets and acts on the handoff doc. No vendor-specific API calls. The `--launch`
|
|
93
|
-
CLI path uses the host's own CLI, isolated in `commands/handoff.md`'s conditional
|
|
93
|
+
CLI path uses the host's own CLI, isolated in `commands/compose-handoff.md`'s conditional
|
|
94
94
|
block — the skill logic is identical across Claude Code, Codex, and future hosts.
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: loop-builder
|
|
3
|
+
description: Use when the user asks to "create a custom build loop", "build a loop spec", "make a focused loop", "generate a workflow loop", "adapt a framework into a loop", or asks whether a workflow should use skill chaining. Generates declarative focused-loop specs, presets, validators, and skill-chain plans.
|
|
4
|
+
version: 0.1.0
|
|
5
|
+
user-invocable: false
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
<!-- SPDX-FileCopyrightText: 2025-2026 Tyrone Ross, Jr <46267523+tyroneross@users.noreply.github.com> | SPDX-License-Identifier: Apache-2.0 -->
|
|
9
|
+
|
|
10
|
+
# loop-builder
|
|
11
|
+
|
|
12
|
+
Create declarative focused-loop specs that reuse build-loop's phase discipline outside pure coding work. The skill turns a preset or framework into a small loop pack: `loop.yaml`, `rubric.md`, report template, validator stub, and explicit skill-chain guidance.
|
|
13
|
+
|
|
14
|
+
## Core Rule
|
|
15
|
+
|
|
16
|
+
Keep the runner generic and the loop domain-specific. Do not create a new orchestrator for every workflow. Generate a loop spec that declares inputs, outputs, validators, gates, learn payload, and skill-chain handoffs.
|
|
17
|
+
|
|
18
|
+
## Workflow
|
|
19
|
+
|
|
20
|
+
1. **Classify the loop request.**
|
|
21
|
+
- Use a preset when the user asks for a known loop type: active project evidence, source ingestion, raw data audit, presentation audit, or research synthesis.
|
|
22
|
+
- Use the generic artifact lifecycle preset when the request is novel but still follows intake -> provenance -> produce -> review -> learn.
|
|
23
|
+
- Use a framework adaptation when the user provides a method such as Pyramid Principle, PRISMA, ISO 19011, GTD, DMAIC, OKR, or a company-specific workflow.
|
|
24
|
+
|
|
25
|
+
2. **Define the artifact contract.**
|
|
26
|
+
- Name accepted inputs.
|
|
27
|
+
- Name target outputs.
|
|
28
|
+
- State the validator evidence required before success.
|
|
29
|
+
- State confirmation gates: external send, sensitive data exposure, money movement, legal assertion, production/customer operation, people-impacting decision, irreversible source-of-truth change.
|
|
30
|
+
|
|
31
|
+
3. **Plan skill chaining.**
|
|
32
|
+
- Treat skill chaining as phase routing, not a hidden dependency.
|
|
33
|
+
- Declare the chain in `skill_chain` with phase names and fallback behavior.
|
|
34
|
+
- Prefer existing skills for specialized work: `research` for evidence gathering, Pyramid skills for presentation/storyline work, `doc` for Word documents, `build-loop:knowledge` for durable memory, and `plugin-builder` or `skill-builder` only when generating new capabilities.
|
|
35
|
+
- Every chained skill must hand back a concrete artifact path or decision record.
|
|
36
|
+
|
|
37
|
+
4. **Generate the loop pack.**
|
|
38
|
+
- Run:
|
|
39
|
+
```bash
|
|
40
|
+
python3 skills/loop-builder/scripts/loop_builder.py create <loop-id> --preset <preset-name>
|
|
41
|
+
```
|
|
42
|
+
- Default output is `.build-loop/loops/<loop-id>/`.
|
|
43
|
+
- Use `--output <dir>` for a WorkWiki, ObsidianVault, or non-code project workspace.
|
|
44
|
+
- Use `--force` only when replacing an existing generated loop pack intentionally.
|
|
45
|
+
|
|
46
|
+
5. **Review the generated spec.**
|
|
47
|
+
- Confirm `loop.yaml` has phases, validators, gates, and `skill_chain`.
|
|
48
|
+
- Confirm `rubric.md` has pass/fail checks.
|
|
49
|
+
- Confirm `templates/report.md` matches the output artifact.
|
|
50
|
+
- Run the generated validator stub:
|
|
51
|
+
```bash
|
|
52
|
+
python3 .build-loop/loops/<loop-id>/validators/validate_loop.py
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Skill Chaining Guidance
|
|
56
|
+
|
|
57
|
+
Use skill chaining when the loop has stable phase boundaries and at least one phase is better handled by an existing specialized skill.
|
|
58
|
+
|
|
59
|
+
Good candidates:
|
|
60
|
+
|
|
61
|
+
- Research -> synthesis -> presentation/storyline -> audit -> knowledge promotion.
|
|
62
|
+
- Source ingestion -> raw-data audit -> source card -> retrieval/index check.
|
|
63
|
+
- Presentation audit -> Pyramid critique -> accessibility check -> fix plan.
|
|
64
|
+
- Word doc audit -> document parser -> claim verification -> redline report.
|
|
65
|
+
- Interview synthesis -> quote extraction -> themes -> deck/source-card output.
|
|
66
|
+
|
|
67
|
+
Avoid chaining when:
|
|
68
|
+
|
|
69
|
+
- A single deterministic script can do the whole job.
|
|
70
|
+
- Phase outputs are vague or untestable.
|
|
71
|
+
- The chain would make ownership unclear.
|
|
72
|
+
- A specialist skill would produce advice without a file, verdict, or cited evidence trail.
|
|
73
|
+
|
|
74
|
+
## Presets
|
|
75
|
+
|
|
76
|
+
List presets:
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
python3 skills/loop-builder/scripts/loop_builder.py list
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
Create a loop:
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
python3 skills/loop-builder/scripts/loop_builder.py create active-project-evidence --preset active-project-evidence
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
Inspect a preset:
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
python3 skills/loop-builder/scripts/loop_builder.py inspect presentation-audit
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
## Additional Resources
|
|
95
|
+
|
|
96
|
+
- `references/spec-format.md` describes the generated loop schema and skill-chain fields.
|
|
97
|
+
- `scripts/loop_builder.py` is the deterministic generator.
|
|
98
|
+
- `presets/*.yaml` contains YAML-compatible preset definitions.
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "active-project-evidence",
|
|
3
|
+
"title": "Active Project Evidence Loop",
|
|
4
|
+
"summary": "Move live project material from active workspace state into a decision artifact and canonical knowledge.",
|
|
5
|
+
"inputs": [
|
|
6
|
+
"active project folder",
|
|
7
|
+
"live log",
|
|
8
|
+
"research notes",
|
|
9
|
+
"source artifacts",
|
|
10
|
+
"generated outputs",
|
|
11
|
+
"promotion queue"
|
|
12
|
+
],
|
|
13
|
+
"outputs": [
|
|
14
|
+
"current-state summary",
|
|
15
|
+
"evidence map",
|
|
16
|
+
"decision artifact or sponsor update",
|
|
17
|
+
"promotion candidates",
|
|
18
|
+
"retrieval test plan"
|
|
19
|
+
],
|
|
20
|
+
"phases": {
|
|
21
|
+
"assess": {
|
|
22
|
+
"goal": "Identify the project question, audience, live state, source roots, and canonical destination.",
|
|
23
|
+
"required": ["project_goal", "audience", "source_inventory", "current_outputs", "canonical_wiki_target"]
|
|
24
|
+
},
|
|
25
|
+
"plan": {
|
|
26
|
+
"goal": "Sequence source review, artifact production, validation, and promotion.",
|
|
27
|
+
"required": ["source_priority", "artifact_type", "validator_order", "promotion_rules"]
|
|
28
|
+
},
|
|
29
|
+
"produce": {
|
|
30
|
+
"goal": "Create the current-state synthesis, evidence map, and decision artifact.",
|
|
31
|
+
"required": ["known_unknown_map", "source_backed_claims", "open_questions"]
|
|
32
|
+
},
|
|
33
|
+
"review": {
|
|
34
|
+
"goal": "Validate claim support, audience fit, source traceability, and promotion readiness.",
|
|
35
|
+
"required": ["validator_results", "gate_check", "fix_list"]
|
|
36
|
+
},
|
|
37
|
+
"learn": {
|
|
38
|
+
"goal": "Promote stable source pages, reusable assets, and retrieval aliases.",
|
|
39
|
+
"required": ["promotion_candidates", "retrieval_probes", "reusable_patterns"]
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
"validators": [
|
|
43
|
+
{
|
|
44
|
+
"id": "source_trace",
|
|
45
|
+
"pass_condition": "Every material claim cites a source path, slide, row, transcript timestamp, or explicitly marked assumption.",
|
|
46
|
+
"method": "review"
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"id": "current_state_integrity",
|
|
50
|
+
"pass_condition": "Knowns, unknowns, contradictions, and next evidence needs are separated.",
|
|
51
|
+
"method": "review"
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"id": "promotion_readiness",
|
|
55
|
+
"pass_condition": "Each promoted item has a target wiki layer and evidence-backed reason for promotion.",
|
|
56
|
+
"method": "review"
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"id": "retrieval_probe",
|
|
60
|
+
"pass_condition": "At least one future retrieval query is named for each durable output.",
|
|
61
|
+
"method": "review"
|
|
62
|
+
}
|
|
63
|
+
],
|
|
64
|
+
"gates": {
|
|
65
|
+
"confirm": ["external_send", "sensitive_data_exposure", "irreversible_source_change"],
|
|
66
|
+
"surface": ["people_impacting_decision", "legal_or_compliance_assertion"]
|
|
67
|
+
},
|
|
68
|
+
"skill_chain": {
|
|
69
|
+
"intake": {
|
|
70
|
+
"primary": ["research"],
|
|
71
|
+
"optional": ["doc"],
|
|
72
|
+
"fallback": "Manual source inventory with file paths and confidence labels.",
|
|
73
|
+
"handoff_artifact": "source_inventory.md"
|
|
74
|
+
},
|
|
75
|
+
"produce": {
|
|
76
|
+
"primary": ["pyramid-principle:pyramid-short-form", "pyramid-principle:pyramid-presentation"],
|
|
77
|
+
"optional": ["research"],
|
|
78
|
+
"fallback": "Draft the artifact from the evidence map using answer-first structure.",
|
|
79
|
+
"handoff_artifact": "decision_artifact.md"
|
|
80
|
+
},
|
|
81
|
+
"review": {
|
|
82
|
+
"primary": ["pyramid-principle:pyramid-audit"],
|
|
83
|
+
"optional": ["research"],
|
|
84
|
+
"fallback": "Run binary validators in rubric.md manually.",
|
|
85
|
+
"handoff_artifact": "review_findings.md"
|
|
86
|
+
},
|
|
87
|
+
"learn": {
|
|
88
|
+
"primary": ["build-loop:knowledge"],
|
|
89
|
+
"optional": ["research"],
|
|
90
|
+
"fallback": "Write promotion candidates and retrieval probes into the report.",
|
|
91
|
+
"handoff_artifact": "promotion_candidates.md"
|
|
92
|
+
}
|
|
93
|
+
},
|
|
94
|
+
"learn": {
|
|
95
|
+
"store": ["source_quirks", "promotion_candidates", "retrieval_aliases", "reusable_assets", "rubric_failures"]
|
|
96
|
+
}
|
|
97
|
+
}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "generic-artifact-loop",
|
|
3
|
+
"title": "Generic Artifact Lifecycle Loop",
|
|
4
|
+
"summary": "Turn source material into a validated artifact, then preserve reusable lessons and retrieval handles.",
|
|
5
|
+
"inputs": [
|
|
6
|
+
"source material",
|
|
7
|
+
"artifact goal",
|
|
8
|
+
"audience",
|
|
9
|
+
"constraints",
|
|
10
|
+
"definition of done"
|
|
11
|
+
],
|
|
12
|
+
"outputs": [
|
|
13
|
+
"artifact contract",
|
|
14
|
+
"working artifact",
|
|
15
|
+
"review report",
|
|
16
|
+
"fix list",
|
|
17
|
+
"learn payload"
|
|
18
|
+
],
|
|
19
|
+
"phases": {
|
|
20
|
+
"assess": {
|
|
21
|
+
"goal": "Define artifact type, source materials, audience, constraints, and done condition.",
|
|
22
|
+
"required": ["artifact_type", "source_material", "audience", "constraints", "done_condition"]
|
|
23
|
+
},
|
|
24
|
+
"plan": {
|
|
25
|
+
"goal": "Sequence production, validation, confirmation gates, and learn outputs.",
|
|
26
|
+
"required": ["work_sequence", "validator_order", "gate_check"]
|
|
27
|
+
},
|
|
28
|
+
"produce": {
|
|
29
|
+
"goal": "Create or transform the artifact.",
|
|
30
|
+
"required": ["working_artifact", "source_trace"]
|
|
31
|
+
},
|
|
32
|
+
"review": {
|
|
33
|
+
"goal": "Run deterministic checks first, then judgment checks.",
|
|
34
|
+
"required": ["validator_results", "fix_list"]
|
|
35
|
+
},
|
|
36
|
+
"learn": {
|
|
37
|
+
"goal": "Store reusable patterns, templates, failure modes, and retrieval handles.",
|
|
38
|
+
"required": ["learn_payload", "retrieval_handles"]
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
"validators": [
|
|
42
|
+
{
|
|
43
|
+
"id": "artifact_contract",
|
|
44
|
+
"pass_condition": "Inputs, outputs, audience, and done condition are named before production.",
|
|
45
|
+
"method": "review"
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"id": "source_trace",
|
|
49
|
+
"pass_condition": "Material claims or transformations trace to source material or marked assumptions.",
|
|
50
|
+
"method": "review"
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"id": "gate_check",
|
|
54
|
+
"pass_condition": "External send, sensitive data, money, legal, production, people, and irreversible-change gates are checked.",
|
|
55
|
+
"method": "review"
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"id": "learn_payload",
|
|
59
|
+
"pass_condition": "At least one reusable pattern, template, failure mode, or retrieval handle is captured or explicitly marked none.",
|
|
60
|
+
"method": "review"
|
|
61
|
+
}
|
|
62
|
+
],
|
|
63
|
+
"gates": {
|
|
64
|
+
"confirm": ["external_send", "sensitive_data_exposure", "money_movement", "legal_or_compliance_assertion", "production_or_customer_operation", "people_impacting_decision", "irreversible_source_change"]
|
|
65
|
+
},
|
|
66
|
+
"skill_chain": {
|
|
67
|
+
"intake": {
|
|
68
|
+
"primary": [],
|
|
69
|
+
"optional": ["research", "doc"],
|
|
70
|
+
"fallback": "Manual artifact contract and source inventory.",
|
|
71
|
+
"handoff_artifact": "artifact_contract.md"
|
|
72
|
+
},
|
|
73
|
+
"produce": {
|
|
74
|
+
"primary": [],
|
|
75
|
+
"optional": ["pyramid-principle:pyramid-short-form", "pyramid-principle:pyramid-presentation"],
|
|
76
|
+
"fallback": "Produce the artifact directly from the contract.",
|
|
77
|
+
"handoff_artifact": "working_artifact"
|
|
78
|
+
},
|
|
79
|
+
"review": {
|
|
80
|
+
"primary": [],
|
|
81
|
+
"optional": ["pyramid-principle:pyramid-audit", "research"],
|
|
82
|
+
"fallback": "Run rubric.md validators manually.",
|
|
83
|
+
"handoff_artifact": "review_report.md"
|
|
84
|
+
},
|
|
85
|
+
"learn": {
|
|
86
|
+
"primary": ["build-loop:knowledge"],
|
|
87
|
+
"optional": [],
|
|
88
|
+
"fallback": "Write learn payload in report.",
|
|
89
|
+
"handoff_artifact": "learn_payload.md"
|
|
90
|
+
}
|
|
91
|
+
},
|
|
92
|
+
"learn": {
|
|
93
|
+
"store": ["templates", "failure_modes", "retrieval_handles", "source_quirks"]
|
|
94
|
+
}
|
|
95
|
+
}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "presentation-audit",
|
|
3
|
+
"title": "Presentation Audit Loop",
|
|
4
|
+
"summary": "Audit a deck for storyline, evidence, slide-level clarity, accessibility, and prioritized fixes.",
|
|
5
|
+
"inputs": [
|
|
6
|
+
"pptx or pdf",
|
|
7
|
+
"speaker notes",
|
|
8
|
+
"audience",
|
|
9
|
+
"meeting goal",
|
|
10
|
+
"source material"
|
|
11
|
+
],
|
|
12
|
+
"outputs": [
|
|
13
|
+
"slide inventory",
|
|
14
|
+
"audit report",
|
|
15
|
+
"prioritized fix plan",
|
|
16
|
+
"claim/source map",
|
|
17
|
+
"reusable deck failure patterns"
|
|
18
|
+
],
|
|
19
|
+
"phases": {
|
|
20
|
+
"assess": {
|
|
21
|
+
"goal": "Extract deck inventory and define audience, decision, timebox, and intended outcome.",
|
|
22
|
+
"required": ["deck_inventory", "audience", "decision_or_goal", "source_material"]
|
|
23
|
+
},
|
|
24
|
+
"plan": {
|
|
25
|
+
"goal": "Choose audit lenses and order deterministic checks before judgment checks.",
|
|
26
|
+
"required": ["audit_lenses", "slide_reference_scheme", "accessibility_scope"]
|
|
27
|
+
},
|
|
28
|
+
"produce": {
|
|
29
|
+
"goal": "Produce findings with slide references and ranked fixes.",
|
|
30
|
+
"required": ["slide_findings", "claim_gaps", "fix_priority"]
|
|
31
|
+
},
|
|
32
|
+
"review": {
|
|
33
|
+
"goal": "Check that findings are specific, evidenced, and separated by severity and type.",
|
|
34
|
+
"required": ["finding_evidence", "severity_ranking", "accessibility_split"]
|
|
35
|
+
},
|
|
36
|
+
"learn": {
|
|
37
|
+
"goal": "Capture recurring deck failure modes and reusable slide patterns.",
|
|
38
|
+
"required": ["failure_patterns", "template_candidates"]
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
"validators": [
|
|
42
|
+
{
|
|
43
|
+
"id": "slide_references",
|
|
44
|
+
"pass_condition": "Every finding cites a slide number, section, or notes location.",
|
|
45
|
+
"method": "review"
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"id": "claim_support",
|
|
49
|
+
"pass_condition": "Material claims are mapped to a source or marked as unsupported/assumption.",
|
|
50
|
+
"method": "review"
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"id": "audience_fit",
|
|
54
|
+
"pass_condition": "Recommendations are tied to the audience job and meeting decision, not taste alone.",
|
|
55
|
+
"method": "review"
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"id": "accessibility_split",
|
|
59
|
+
"pass_condition": "Accessibility findings are separated from storyline/design judgment and labeled partial when automated extraction is limited.",
|
|
60
|
+
"method": "review"
|
|
61
|
+
}
|
|
62
|
+
],
|
|
63
|
+
"gates": {
|
|
64
|
+
"confirm": ["external_send", "sensitive_data_exposure"],
|
|
65
|
+
"surface": ["legal_or_compliance_assertion", "people_impacting_decision"]
|
|
66
|
+
},
|
|
67
|
+
"skill_chain": {
|
|
68
|
+
"intake": {
|
|
69
|
+
"primary": [],
|
|
70
|
+
"optional": ["doc"],
|
|
71
|
+
"fallback": "Extract slide titles, notes, and visible text with available local tools.",
|
|
72
|
+
"handoff_artifact": "deck_inventory.md"
|
|
73
|
+
},
|
|
74
|
+
"produce": {
|
|
75
|
+
"primary": ["pyramid-principle:pyramid-presentation"],
|
|
76
|
+
"optional": ["research"],
|
|
77
|
+
"fallback": "Apply one-job-per-slide and answer-first storyline checks manually.",
|
|
78
|
+
"handoff_artifact": "audit_report.md"
|
|
79
|
+
},
|
|
80
|
+
"review": {
|
|
81
|
+
"primary": ["pyramid-principle:pyramid-audit"],
|
|
82
|
+
"optional": ["research"],
|
|
83
|
+
"fallback": "Run rubric.md validators against each slide finding.",
|
|
84
|
+
"handoff_artifact": "audit_verdict.md"
|
|
85
|
+
},
|
|
86
|
+
"learn": {
|
|
87
|
+
"primary": ["build-loop:knowledge"],
|
|
88
|
+
"optional": [],
|
|
89
|
+
"fallback": "Record recurring deck failure patterns in the report.",
|
|
90
|
+
"handoff_artifact": "deck_lessons.md"
|
|
91
|
+
}
|
|
92
|
+
},
|
|
93
|
+
"learn": {
|
|
94
|
+
"store": ["deck_failure_patterns", "reusable_slide_patterns", "source_quirks", "rubric_failures"]
|
|
95
|
+
}
|
|
96
|
+
}
|