research(meta-orchestrator): brainstorm — plan-memory feasibility + 2 design directions - #227
Merged
Merged
Conversation
… design directions Brainstorming-phase output for the maintainer's «meta-orchestrator owns persistent project-plan memory» idea. Pre-R-phase exploration only — decomposes the 5 candidate features, surveys 7+ external prior-art candidates (Cline Memory Bank, TaskMaster, SDD, OpenHands, aif-handoff, Devin Knowledge, Mem0/LangGraph/Cognee) with DeepWiki + WebSearch evidence per candidate, names 2 distinct design directions (extend wave-sequencing-plan.md in-place vs shadow committed cache), enumerates R-phase questions + 3+ falsifiers, runs §3.7 self-application check. No implementation, no helpers, no SKILL.md edits, no SSOT row appends. Kickoff: .claude/orchestrator-prompts/meta-orchestrator-plan-memory/kickoff.md
7 tasks
artyhoo
added a commit
that referenced
this pull request
Jul 22, 2026
…tests-surface S2) (#1090) * feat(rule-tests): S2 — enrichment sidecar format + firing test (rule-tests-surface S2) The non-npm rule-test material home: `ruleId → { bad: string[], good: string[] }`, one map file per backend (multiple bad[] = bypass variants, mirroring npm negative-test.input[]). Formalizes the already-shipped to-node.ts:184 "pure enrichment, never in the node" pattern + the *.practice.json examples{bad,good} precedent — adding NO IR change. - Module `packages/core/synthesizer/rule-tests-sidecar.ts`: seedRuleTestsSidecar (bad ← node.pairedExamples.negative, good ← positive — the §2 inversion) + parse/validate/load (loud on malformed). Consumer home `.ai-factory/rule-tests/<backend>.json` (data-plane, regenerable); the framework's own instance lives with the live-generation fixtures (.ai-factory gitignored here). - Firing test `backends/astgrep/rule-tests-sidecar-firing.test.ts`: per-sample single-rule isolation (fresh mkdtemp, one rendered rule, one planted src.py) via the existing fireContract with an in-memory expectedCode=ruleId contract — the committed firing-contract.json is NOT grown. bad[] fires / good[] clean. - Write-half repair-act (S1 T15): appended ONE tool-verified bypass variant (yaml.load(raw, Loader=yaml.FullLoader), a false-safety form) to the framework's astgrep sidecar bad[]; ast-grep 0.44.1 reports ruleId getff-researched-no-yaml-load. - Honest coverage: FORMAT defined for all lanes; FIRING coverage = astgrep only (ruff/cargo have no committed framework fixture yet). - SSOT #227 (ADAPT) + S1 doc interim-parenthetical sweep (both named sites). Prior-art: prior-art-evaluations.md#219 + #183 (live-generation core enrichment + rule-bootstrapping practice record) — REFERENCE: S2 formalizes the already-shipped own-stack enrichment pattern (to-node.ts 'pure enrichment, never in the node' via mergeEnrichment; getff-researched-no-yaml-load.practice.json carrying examples{bad,good} outside the frozen node). No IR change, no new dependency. Prior-art: prior-art-evaluations.md#186 (cargo-vet → .ai-factory committed JSON records) + #200 (harness-model.json data-plane) — ADAPT/REFERENCE of the established .ai-factory/*.json consumer-owned committed-record convention for the sidecar home. Prior-art: prior-art-evaluations.md#169 + #175 (examples.bad/good minimal-pair + require-vacuity discipline) — REFERENCE: ruleId→{bad,good} with bypass variants mirrors npm negative-test.input[]; firing reuses fireContract, no new gate. Prior-art: prior-art-evaluations.md#227 (NEW row, this commit) — the sidecar format's own register entry. * test(rule-tests): tighten loader — good[] non-empty + missing-bad branch coverage (S2 review Minors) * test(install-sh): regen npm fingerprints after S2 protocol-doc sweep (shipped-agent cascade) --------- Co-authored-by: t <t@t.co>
artyhoo
pushed a commit
that referenced
this pull request
Jul 22, 2026
…locks principle-11 F1) The adapter-jig J2 squash (#1094, df8011c) carried its Prior-art evidence in the PR body only — no git trailers in the squash commit body and no SSOT path match for its three new capability files, so principle 11 F1 turned RED for every subsequent PR (first observed on this PR's CI). Bookkeeping pointer appended to the EXISTING entry #226 (capability already registered by the adapter-jig sessions; BUILD verdict unchanged) — operator-invited cross-owner SSOT edit, 2026-07-22. §1.7: forward-check — append-only SSOT edit per prior-art-evaluations.md §3 (docs/meta-factory/prior-art-evaluations.md:299 row 226 extended in place); F1 green locally (packages/core/principles/11-build-first-reuse-default.test.ts:340). backward-check — change class = «post-merge SSOT pointer for a squash that dropped trailers»; sibling surface: #1093 (our own S5 squash) verified — its capability file run-rule-tests-firing.sh matches the SSOT via the #219/#91/#227 trailer text carried into the squash body, no pointer needed, SWEPT-CLEAN. GAP-FOUND: none.
artyhoo
added a commit
that referenced
this pull request
Jul 22, 2026
…uff/cargo coverage + mutation-root test (rule-tests-surface) (#1097) * fix(rule-tests): whole-work corrective — sidecar shape validation + ruff/cargo coverage + mutation-root test + tense fix (rule-tests-surface) Post-merge corrective PR for S5 (#1093). Two-altitude whole-work review found a BLOCKER (shipped channel did no SHAPE validation) + a MAJOR (ruff/cargo lanes had zero test coverage) + FIX-3..6. No new capability — extends existing S5 artifacts + tests + docs; STOP lines unchanged (no spec edit, no .husky edits, single-rule isolation preserved). - FIX-1 (BLOCKER): shape validation, not just JSON parse. The runner (packages/core/synthesizer/run-rule-tests-firing.sh:74 `_validate_sidecar` + :100 `_fail_shape`) and the pre-push arm (packages/core/hooks/pre-push.ts:845 `SIDECAR_SHAPE_PROBE` + :963) now mirror the S2 loader `validateRuleTestsSidecar` (rule-tests-sidecar.ts:96-123) up front, per lane: a `badd` typo, an empty `bad[]`/`good[]`, an unknown key, or a mis-shaped entry is BROKEN MATERIAL → per-file loud FAIL + exit 1 — closing the silent-green hole where `(s && s.bad) || []` coerced a typo'd/empty field to zero samples. Both RED unguarded (no lane tool needed). - FIX-2 (MAJOR): ruff + cargo test coverage. New paired-negatives in pre-push.consumer-layout.test.ts exercise `_fire_ruff` end-to-end (TID251-keyed sidecar against a delivered-shape ruff-bans.toml — bad[] fires + good[] clean → exit 0; broken bad[] → exit 1) and the cargo toggle logic (unset → opt-in skip; GETFF_PREPUSH_CARGO_FIRE=1 + cargo absent → DEGRADED skip) — no compile. - FIX-3: committed consumer-depth regression for D-S5-mutation-root (run-generated-rule-mutation.sh:36 git-toplevel root resolution) — asserts the manifest path resolves INSIDE the sandbox, catching a regression to `../../..`. - FIX-4: unified the cargo opt-in skip wording between the runner and the arm (pre-push.ts:975); the cargo test asserts the shared substring so drift breaks it. - FIX-5: closed the S2-deferred stale tense in agents/rule-test-author.md — astgrep = landed + committed fixture; ruff/cargo = format landed, committed fixtures pending; added the committed-fixture honesty note into the honesty map (rule-test-author.md:58, durable in-repo home). - FIX-6: appended a Residuals / follow-ups gap-log to .claude/orchestrator-prompts/rule-tests-surface/done.md (each item + PR-of-record; marks what this PR closes). - Install-sh baselines regenerated (shipped runner + pre-push.ts + agent-doc cascade). §1.7: forward-check applied — the shape probe RED's a mis-shaped sidecar at the earliest reachable channel (run-rule-tests-firing.sh:74 `_validate_sidecar` + pre-push.ts:963 `shapeProbe`), an attention-is-not-a-mechanism §1 upgrade of a silent-green hole to a deterministic gate; complies with no-paid-llm-in-ci (deterministic node/bash, zero API calls) and ci-tool-pinning.md §1 (no new tool install; the mutation-root fix uses git plumbing). The runner re-implements the S2 loader inline rather than importing it because packages/core/synthesizer/ is not shipped to consumers — verified: install.sh ships only packages/core/{hooks, eslint-rules}. doc-authority-hierarchy.md §2-§3: agents/rule-test-author.md keeps its header; edits are body-tense only (rule-test-author.md:58,66). backward-check sweep — change class = "the shipped sidecar-firing channel + its shape contract + the S2 loader it mirrors"; sibling surfaces swept: the S2 loader `validateRuleTestsSidecar` (rule-tests-sidecar.ts:96-123) is the SSOT the runner + arm now mirror (kept in sync, comment-anchored on both), SWEPT-CLEAN; the two firing channels (runner run-rule-tests-firing.sh + pre-push arm pre-push.ts) both carry the up-front shape guard now, SWEPT-CLEAN; the cargo opt-in wording exists in exactly two places (runner + arm) and is now unified + test-pinned, SWEPT-CLEAN; the mutation-runner root resolution is the delivery twin of the firing runner and carries the same git-toplevel fix (run-generated-rule-mutation.sh:36), SWEPT-CLEAN; the stale-tense sweep enumerated all three future-tense sidecar sites in rule-test-author.md (:20, :66, :96) — all corrected. GAP-FOUND: none. Prior-art: skipped — corrective PR extending the existing S5 firing runner + pre-push arm + tests + protocol doc; no new capability, no new dependency, no new file under packages/. * docs(ssot): register #1094 J2 implementation files in entry #226 (unblocks principle-11 F1) The adapter-jig J2 squash (#1094, df8011c) carried its Prior-art evidence in the PR body only — no git trailers in the squash commit body and no SSOT path match for its three new capability files, so principle 11 F1 turned RED for every subsequent PR (first observed on this PR's CI). Bookkeeping pointer appended to the EXISTING entry #226 (capability already registered by the adapter-jig sessions; BUILD verdict unchanged) — operator-invited cross-owner SSOT edit, 2026-07-22. §1.7: forward-check — append-only SSOT edit per prior-art-evaluations.md §3 (docs/meta-factory/prior-art-evaluations.md:299 row 226 extended in place); F1 green locally (packages/core/principles/11-build-first-reuse-default.test.ts:340). backward-check — change class = «post-merge SSOT pointer for a squash that dropped trailers»; sibling surface: #1093 (our own S5 squash) verified — its capability file run-rule-tests-firing.sh matches the SSOT via the #219/#91/#227 trailer text carried into the squash body, no pointer needed, SWEPT-CLEAN. GAP-FOUND: none. --------- Co-authored-by: t <t@t.co>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
wave-sequencing-plan.mdin-place; B = shadow committed cache withdual-implementation §7SSOT pointer), enumerates R-phase questions + falsifiers, runs §3.7 self-application check.Changes
##sections (8 per kickoff §7 + See-also).How to verify
grep -cE '^## §[1-8]' docs/meta-factory/research-patches/2026-05-25-plan-memory-brainstorm.md→8wave-sequencing-plan.md §0; bootstrapping not blockedgit diff --stat origin/staging..HEAD→ 1 file, +344 lines, no edits to SKILL.md / helpers / rules / SSOTSummary: 0 error(s)Test Files 18 passed (18) · Tests 115 passed (115)gh pr checksScope (what this PR is NOT)
§1.7 Forward/Backward-check applied
Forward — This PR complies with: no-paid-llm-in-ci.md §1 (all prior-art consult via session-bundled DeepWiki + WebSearch; zero API-billed CI calls); build-first-reuse-default.md §3 (DeepWiki + WebSearch ≥3 phrasings per external candidate, T16 problem-class match line per candidate in §3 of patch); memory-codification.md §3 (patch §2/§4 treat memory-vs-repo SoT explicitly — both directions identify whether plan lives in repo or memory and apply the codify-then-pointer discipline); reviewer-discipline.md §2 (patch §4 strategy-vs-factual table preserves human-decides for strategy rows, factual-auto for deterministic mapping); recommendation-laziness-discipline.md §3 (no inline verdict without preceding tool-call evidence — T20 satisfied per §3 of patch); doc-authority-hierarchy.md §2 filename convention (research-patch scope-bound by filename
2026-05-25-plan-memory-brainstorm.md). Evidence:docs/meta-factory/research-patches/2026-05-25-plan-memory-brainstorm.md:1-344.Backward — Sweep: this patch supersedes no existing artefact (first brainstorm-phase patch on plan-memory domain —
find docs/meta-factory/research-patches -name '*plan-memory*'shows only this file post-merge); does NOT silently supersede 2026-05-23-meta-orchestrator-prior-art.md (R-phase 1 that defined skill scope and explicitly excluded auto-write) — patch §3 reads it as internal candidate and cites it as predecessor; does NOT silently supersede 2026-05-25-planner-completeness-prior-art.md (planner-completeness L3/L4/L5 R-phase, predecessor umbrella now closed); SSOT untouched (Artifact Ownership Contract — no row appends, only references to existing rows #27/#64/#67/#72/#73/#74). Evidence:git diff --stat origin/staging..HEAD= 1 file, +344 lines, no other touches.🤖 Generated with Claude Code