research(companion-reuse): Sub-wave B — omo multi-plan + categories + owner disambig - #250
Merged
Merged
Conversation
…tegories + owner disambig Re-evaluates oh-my-openagent multi-plan selection (5-level recency fallback), Categories System, and 11-agent architecture against corrected within-one-project scope. First step: disambiguates canonical owner between SSOT #68 (code-yeongyu/oh-my-openagent) and #81 (Doriandarko/oh-my-openagent). Finding: Doriandarko/oh-my-openagent does not exist (GitHub 404 + DeepWiki 404 confirmed 2026-05-26). Canonical repo is code-yeongyu/oh-my-openagent (59.6k*). SSOT #81 cites a non-existent owner — flagged for correction. SSOT #68 match-score revised 30% -> ~50% under corrected within-one-project framing (T16 muddied-scope fix). New vocabulary: session-plan-affinity recency algorithm (findRecentSessionPlanPath). SSOT #81 match-score corrected ~60% -> ~30% (omo alias routing is runtime display-name normalization, not static planning-time vocabulary table). New SSOT row proposed at [next-available-slot] for session-plan-affinity pattern (ADOPT VOCABULARY, ~85% match). Corrects T16 muddied-scope trap from 2026-05-23 / 2026-05-26 initial sweeps. Prior-art: prior-art-evaluations.md#68 (amended: match-score + vocabulary expansion), prior-art-evaluations.md#81 (amended: repo citation + match-score correction).
…-dive Adds <!-- scope:companion-reuse-omo-deep-dive --> on first line per principle 10 (research-patch-annotation) requirement. Prior-art: skipped — annotation fix only, no new capability.
9 tasks
4 tasks
artyhoo
added a commit
that referenced
this pull request
Aug 16, 2026
… confounding measured) (#1392) Authors the S4 dispatch input fresh (kickoff-s1/s2/s3 §8/§5 chain) and flips the router's S4 row to READY. Substantive content beyond restating design §4/§5: - C0 re-measured on the adjudicated corpus: 0.733 accuracy, MATERIAL-miss 0.319, scored subset 131/151 (86.8%, above D-K8's ~70% floor). This falsifies the spec's own r2 NEW-M4 pre-read («roughly 0.8-0.9») on that pre-read's own stated falsifier; §3.3 carries the number, the command, and a re-derive-or-PARK rule. - §3.6 names a confounding design §5b.1 covers only generically: C1 shares rubric and model family with the S2 cold rater whose labels survive on 122/151 rows. Mandates a secondary breakdown on the 29-row (25 C0-scored) advisor-override slice, with its n≈25 power caveat as part of the requirement, not a footnote. - §7 deliberately does NOT copy the S2 contract shape — S2 closed with `#contract-that-cannot-fail` open against its own lines 2 and 4. Line 1 is arms A-F over S4's own deliverables; the S0 frozen-record probe is absorbed into arm F (blob-hash immutability of every population/S0/S2/S3 master), which S4 can break. - Arm E closes W-7 for S4's own report: report numbers are recomputed from the artifacts and must match the prose. - Destination probes re-run 2026-08-16: `gh` IS authenticated in the container now, so S2's `cannot-reach-gh` park is NOT a standing fact; promptfoo 0.122.0 reachable; aif base clone STALE at 3a10c71. Table carries probe + date per destination-environment-verification §1b. - Domain traps T-TK4-A..D (truth edited to fit the bench, confounded agreement as accuracy, bar rebuilt after seeing the candidate, promptfoo adopted by name — the last aimed at SSOT #53's existing BUILD verdict for a neighbouring problem class). Prior-art: skipped — dispatch-input authoring only; no dependency, module, or capability is added by this commit. The stage's own capability commit (promptfoo devDependency + Prior-art: trailer + SSOT #250) is specified in kickoff-s4.md §3.1 and lands with S4's implementation, not here. Co-authored-by: Test <test@example.com>
Merged
artyhoo
added a commit
that referenced
this pull request
Aug 16, 2026
* feat(triage-kernel-v2): S4 capability — promptfoo devDep + SSOT row #250 Stage S4 bench runner (kickoff-s4 §3.1, design D-K3 ratified ADOPT). promptfoo@0.122.0 pinned as devDependency — matrix/caching runner over an exec:-shaped provider shelling `claude -p --model sonnet` for C1 (151 per-row) and C2 (41 grouped) vs s3-final.csv. devDependency only; never enters CI (no-paid-llm-in-ci.md, design §6). SSOT #250 carries the T16 problem-class check vs #53: same tool name, different problem class (generation-then-grade here vs grade-only-pre-existing-transcripts there), so the verdicts differ legitimately. Prior-art: prior-art-evaluations.md#250 (ADOPT — S4 bench runner; T16 class check vs #53 in rationale.) Prior-art: prior-art-evaluations.md#53 (BUILD — different problem class: transcript scoring without generation; verdict stands.) * triage-kernel-v2 S4: bench mechanics — promptfoo exec runner, sha-gated bench input, scorer + 8 fail-closed arms Runner: promptfoo@0.122.0 over an exec provider shelling `claude -p --model sonnet` (model pinned by name inside provider.mjs — a swap is a PARK, kickoff-s4 §3.4). Bench input built from the frozen substrate via the frozen buildPayload (judges see rubric + context + finding only), stamped with its SHA-256 and re-derived by arm H. Scorer: per-axis stats (copied frozen choose/mcnemar/kappa), two-leg class gate, confounding slice, C2 delta/cost split, --join for s4-bench.csv, and arms A-H (blindness differential + token rescan, enums, subset honesty, report-number reconciliation, substrate blob-hash immutability at 7425346, SSOT #250 wiring, judge provenance). One recorded parse-refinement incident in run.mjs parseC2Group doc comment (frozen search-parse semantics; positional keys still reject). * triage-kernel-v2 S4: results — C1/C2 judge artifacts, s4-bench.csv join, bench report + corpus README §S4 Verdict lines (scorer output, arms A-H green): class n=131 — no layer beats C0 (C1 0.687 p=0.4514 miss 0.351; C2 0.710 p=0.7608 miss 0.266; both DOES-NOT-SHIP, C0 0.733 stays the bar). Layer n=151 — both candidates beat the 0.530 majority bar (C1 0.662 p=0.0012; C2 0.642 p=0.0076). Whose n=151 — judgment-only, not corpus-validated (C1 0.848, C2 0.854 below the degenerate 0.901 bar). Confounding slice measured (n=25, insufficient power, reported never gated). C2 = delta over C1 (+0.023, inside ±9pp MDD) at 41 vs 151 calls. Spec's C0 pre-read falsification and the C2 parse-refinement incident recorded in the report. * fix(triage-kernel-v2): S4 round-1 fidelity rework — arm E reconciles report PROSE, directional leg 1 Cold fidelity audit round 1 (FIDELITY: REVISE vs 1bbff50) — five items, no judge re-run, no answer-key touch, no artifact regeneration: 1. MAJOR arm E: NUM gains the report-stated keys computed from the existing artifacts (class PABAK per candidate, layer multiclass kappa per candidate, discordant b/c pairs for every McNemar comparison), and arm E now reconciles the report PROSE in addition to the s4-numbers block (block stays the canonical carrier). Boundary- anchored match (?<![\d.])v(?!\d|\.\d) so '25' cannot match inside '0.325'/'25.5' while a sentence-ending period still matches. Falsified live: a one-digit prose edit REDs arm E; restored, green. 2. MINOR arm A(a): per-axis denominators captured inside the per-axis loops from the iterated arrays and asserted against the §3.6 populations (class=131 on the scored subset, layer=whose=151 on labelable) — a loop switched to the other population is RED. 3. MINOR leg 1 made DIRECTIONAL (PASS requires p<0.05 AND c>b), same rule applied to the layer beat phrase; method note added to the report. No verdict changed: both class candidates failed leg 1 on p alone. 4. DOC the C2 incident passage now states the actual finding — kickoff §3.5 specified no C2 output contract; the frozen S2/C1 search semantics (triage-s0-run.mjs:59) were adopted and are ratified; PARK-shaped note recorded for S5. No behaviour change. 5. NOTE regex-divergence recorded (s0-run [a-z]+ vs bench TRIPLE_RE [a-z-]+ layer pattern); neither regex changed. §7 gates green: s4 --check 8/8 arms, s3-agreement --check, 9-arg s2-labels-check, markdownlint clean (226 lines). Prior-art: skipped — gate-strength fix + documentation on existing S4 surfaces, no new capability. * fix(triage-kernel-v2): add <!-- scope: --> annotation to the S4 bench research patch Principle 10 (packages/core/principles/10-research-patch-annotation.test.ts) requires every file in docs/meta-factory/research-patches/ to carry a machine-parseable <!-- scope:<slug> --> comment on its FIRST line; the S4 bench patch shipped with the H1 heading there, so vitest-principles went RED in the full local CI sweep (branch-introduced — the file is new in this branch). Slug triage-kernel-v2-s4-bench, matching the sibling 2026-08-11-triage-kernel-v2-s0-probe.md shape. Content-neutral: two lines prepended, no prose touched, so arm E of triage-s4-score.mjs is unaffected. Prior-art: skipped — one-line annotation fix for an existing principle gate, no new capability. --------- Co-authored-by: Test <test@example.com>
11 tasks
artyhoo
added a commit
that referenced
this pull request
Aug 16, 2026
…e axis (7 arms) (#1400) ## Summary triage-kernel-v2 **S4b — the outcome audit**. For all 151 labelable corpus rows it establishes, from the live tree and its history, what the repository actually did about each finding, and publishes two things: a prioritised drift register (the input a repair umbrella consumes) and the outcome axis inserted into S4's bench patch. Seven fail-closed arms gate it. Stage kickoff: `.claude/orchestrator-prompts/triage-kernel-v2/kickoff-s4b.md`. Rigor label (L0): `research-grade`. ## Changes - `scripts/triage-s4b-outcomes.mjs` — the audit driver plus arms A-G (A completeness + artifact registration, B enum/stratum validity, C witness discipline, D raw-join + per-seat provenance, E report reconciliation, F substrate immutability by blob hash against `FROZEN_S4 = 'fa8da9406c'`, G repair ceiling in both directions). - `docs/meta-factory/triage-corpus/s4b-outcomes.csv` — the register, 151 rows, `id,stratum,outcome,cost,witness,rationale`. - `docs/meta-factory/triage-corpus/s4b-audit-raw.json` — the seat log: 30 per-group objects carrying `group`/`model`/`startedAt`/`rows`, so every register row traces to an auditor line. - `docs/meta-factory/research-patches/2026-08-16-triage-kernel-v2-s4b-outcome-audit.md` — the drift register: probes verbatim, method, per-stratum distribution, the ranked rotted table, the empty disagreement table with its mechanical definition, §3.6 limits, traps, self-application. - `docs/meta-factory/research-patches/2026-08-16-triage-kernel-v2-s4-bench.md` — **only** its reserved `## Outcome axis (filled by S4b)` section filled (arm F asserts prefix+tail byte-equality). - `docs/meta-factory/triage-corpus/README.md` — §S4b section + Files-table rows with `rows=151`. **Headline:** HOLDS 139/151 (92.1%) · MOVED 8 · NEVER-DONE 3 · DECLINED 1 · **DRIFTED 0** · UNVERIFIABLE 0 · `cost=VISIBLE` 0. Survivorship is named, not hidden: the corpus is drawn from findings on PRs that were reviewed and merged, so a high HOLDS share is a property of the population, not a grade. `cost=NONE-FOUND` on a MATERIAL row is never read as falsification of the S3 label (T-TK4b-B) — the disagreement table ships empty and `s3-final.csv` is untouched. ## Prior-art consult - [x] No capability commit in this PR: no new explicit dependency, no new file ≥80 LOC under `packages/`, no new `packages/core/<new-dir>/` file ≥50 LOC. The driver lands in `scripts/` and the rest is documentation, so the `Prior-art:` trailer gate does not fire. - [x] No new capability area surfaced — the stage consumes S4's already-registered SSOT #250 (promptfoo) and adds none of its own. - [x] n/a — no existing SSOT entry needed a `Last reviewed` touch. - [x] n/a — no new capability area, so no context7 pass was owed. ## Test plan - [x] `node scripts/triage-s4b-outcomes.mjs --check` → PASS, 7/7 arms. - [x] `node scripts/triage-s4-score.mjs --check` → PASS, 8/8 arms (S4's numbers and frozen artifacts unmoved by this stage). - [x] `node scripts/triage-s3-agreement.mjs --check` → PASS, arms A-F over 151 rows. - [x] `node scripts/triage-s2-labels-check.mjs …` (union of the six population CSVs + README + rubric) → PASS, 6/6 arms — the README `rows=` tokens reconcile. - [x] `npm run --prefix packages/core test:principles` → 41 files / 390 tests green (this is what caught the branch-introduced principle-10 red; see `## Review findings`). - [x] `bash scripts/run-local-ci-sweep.sh --full` → `SWEEP: 33 gate(s) passed (mode=full)`, exit 0. `md-ci-only` is WARN-SKIP by construction (markdown line/dead-link gates are CI-only); the `.md → .md` links of every file this PR touches were resolved by hand and all exist. - [ ] §1.7-свод lands in squash-body. ## Provenance Stage PR. Kickoff `.claude/orchestrator-prompts/triage-kernel-v2/kickoff-s4b.md`; base `fa8da9406c` (S4's squash, PR #1397). Substrate: aif-handoff task `7cd11b76-6c1a-41da-a79d-5161700f6bd2`, branch `feature/triage-kernel-v2-7cd11b`, dispatched from that kickoff via `packages/runtime-bridge/src/cli/dispatch.ts`. The container worker committed and stopped per kickoff §9 (`#autonomous-self-egress` containment) — it opened no PR and pushed nothing; the host session holds the identical three commits, added the principle-10 fix on top, and pushed all four, so `.husky/pre-push` ran. Audit seats: 30 grouped read-only sub-agents on the pinned model `sonnet`, 8 dispatch waves, 7 full-group re-dispatches on malformed verdict lines (never hand-fixed) — logged in `docs/meta-factory/triage-corpus/s4b-audit-raw.json`. Fidelity: Round 2 (round 1 GO on the container head, round 2 GO on the fix). ## Review findings Two cold rounds, both dispatched with `agents/fidelity-auditor.md`, each on its own head SHA. No round-triggering finding in either — no BLOCKER-grade or round-triggering entry was raised, so no `Failure-scenario:` line is owed; everything below is the notes lane. **Round 1 (`71872230b0`) — GO.** The seat verified non-vacuity rather than presence: arm D's exact per-group partition and register-row ⇔ raw-line field equality (`scripts/triage-s4b-outcomes.mjs:294-318`), arm F's 37-file blob freeze plus the insertion invariant on S4's report (`:405-417`), arm G's converse direction (`:449-456`), `FROZEN_S4` pinned as a literal (`:28`). It re-verified 11 register witnesses against the live tree (5 required) — including all three NEVER-DONE rows, whose verdicts stand — and sampled 8 rationales for non-restatement. Stratum B came back 42 HOLDS + 2 MOVED with **zero** UNVERIFIABLE, i.e. not batch-verdicted (T-TK4b-D). Notes-lane items from round 1, none round-triggering: - `scripts/triage-s4b-outcomes.mjs:454` — arm G's converse exempts `.ai-factory/plans/**`, a permitted-set category kickoff §2 does not grant. Inert on this branch: `.gitignore:77` matches `/.ai-factory/*`, so no such path can reach `git diff --name-only`. Latent widening, not a live one. - `scripts/triage-s4b-outcomes.mjs:339` + `:358` — arm E binds only the 10 headline keys, and binds them by presence of the value string in prose; the per-stratum §distribution table and the S4 cross-tab are reconciled block↔recomputation but never prose↔CSV. The seat re-derived both by hand from the canonical block and every cell matched — gate strength, not a wrong number. - `scripts/triage-s4b-outcomes.mjs:251-267` — arm C accepts `path:N-M` and `path:N,M` where §3.8 C writes `file.ext:line`. Every token is bounds-checked and the single-file constraint holds, and the register discloses the widening in its §method. - `docs/meta-factory/triage-corpus/s4b-outcomes.csv`, row `1341-r7-6` — the witness span resolves to the superseding addendum's heading rather than the `/chat`-routing acceptance a few lines below. Right section, imprecise span; the verdict stands. This is the register's own `T-TK4b-E` plausible-witness class, named at `docs/meta-factory/research-patches/2026-08-16-triage-kernel-v2-s4b-outcome-audit.md:133`. **Between rounds — one branch-introduced red the stage's own gates cannot see.** The dispatching session's full local run found `packages/core/principles/10-research-patch-annotation.test.ts` RED: the new drift register opened with its H1 instead of the required `<!-- scope:<slug> -->` first line. The stage's §7 host-verify contract runs four triage scripts and none of them reaches the principles suite, and the diff-mode sweep does not map `docs/meta-factory/research-patches/` onto it — which is why a GO round could sit on top of it. Fixed in `c86a12d72f` (scope annotation + an MD040 fence tag the pre-commit markdownlint gate flagged on re-staging); three lines added, none removed. **Round 2 (`c86a12d72f`) — GO**, narrow delta seat (incremental diff + scope sections + the round-1 watch-list), fresh, not a resume. It verified the delta was scope-neutral instead of taking the commit message's word for it: a repo-wide grep for a `s4b-outcome-audit.md:<digit>` citation returns zero hits, so the +2 line shift moves nothing; arm E's `<!-- s4b-numbers` regex is position-independent; S4's frozen report already carried its own scope annotation, so arm F's prefix equality is untouched. All eight round-1 rows re-verdicted CLEAN against the current tree, and W-9 was added preventively. Plan spot-check: 5. ### Watch-list | id | criterion | why | defect site | reintroduction tell | | --- | --- | --- | --- | --- | | W-1 | §3.8 F — `FROZEN_S4` is a literal SHA constant | a dynamic base makes the whole substrate-freeze arm pass by construction on every branch | none — preventive (`scripts/triage-s4b-outcomes.mjs:28`) | `HEAD`, `merge-base`, `process.env`, or a `git rev-parse` on the `FROZEN_S4` assignment | | W-2 | §3.8 D — register rows are driver-built from raw seat lines, never hand-edited | a hand-patched CSV row is an outcome no seat ever produced, entering a repair umbrella's input | none — preventive (`scripts/triage-s4b-outcomes.mjs:314`) | the field equality loosened to id-only, or the CSV added to a hand-edit path | | W-3 | §3.8 F — S4's report edit is an INSERTION (prefix AND tail byte-equal) | an append would silently push past `## Self-application (T15)` and the s4-numbers block | none — preventive (`scripts/triage-s4b-outcomes.mjs:405-417`) | the tail comparison dropped, or the next-heading anchor re-pointed to EOF | | W-4 | §3.8 G — the converse direction (branch diff ⊆ §2 permitted set) | the ceiling is evaded by unregistered repairs, not by declaring six | none — preventive (`scripts/triage-s4b-outcomes.mjs:449-456`) | the `git diff` leg removed, or the permitted list grown without a §2 amendment | | W-5 | §2 — no permitted-set category the kickoff did not grant | an inert carve-out is the cheapest thing to make live later | `scripts/triage-s4b-outcomes.mjs:454` (inert: `.gitignore:77`) | a second prefix exemption, or this one surviving after `/.ai-factory/*` leaves .gitignore | | W-6 | §3.8 E — prose numbers bound to the CSV, not merely present in it | the per-stratum table and the S4 cross-tab are what a reader quotes, and they are unbound | `scripts/triage-s4b-outcomes.mjs:339`, `:358` | the headline-key list shrinking, or a new prose table with no canonical key | | W-7 | §3.8 C — a witness names ONE file and every cited line exists in it | comma-joined multi-file witnesses are how the seats' malformed lines got in (7 re-dispatches) | none — preventive (`scripts/triage-s4b-outcomes.mjs:254`) | the regex gaining a path alternation, or bounds-checking reduced to file existence | | W-8 | §0 — the answer key is never moved; contradictions are published | resolving a disagreement by editing `s3-final.csv` is the failure the stage exists to avoid | none — preventive (0 disagreement rows) | `s3-final.csv` leaving arm F's freeze list, or appearing in the branch diff | | W-9 | principle 10 — the register keeps `<!-- scope:… -->` as its literal first line | a later prepend re-reds `packages/core/principles/10-research-patch-annotation.test.ts:34` and is invisible to all seven S4b arms | `docs/meta-factory/research-patches/2026-08-16-triage-kernel-v2-s4b-outcome-audit.md:1` (fixed round 2) | any content — an H1, front-matter, a banner — occupying line 1 | Round 1: W-1…W-8 CLEAN (established this round). Round 2: W-1 CLEAN · W-2 CLEAN · W-3 CLEAN · W-4 CLEAN · W-5 CLEAN (inert, notes lane) · W-6 CLEAN · W-7 CLEAN · W-8 CLEAN · W-9 CLEAN (new, preventive) ## Fidelity verdict FIDELITY: GO Basis: .claude/orchestrator-prompts/triage-kernel-v2/kickoff-s4b.md Round: 2 Audited-SHA: c86a12d Evidence: scripts/triage-s4b-outcomes.mjs:28 — `const FROZEN_S4 = 'fa8da9406c';` pinned as a literal per §3.8 arm F (never HEAD, never merge-base); `node scripts/triage-s4b-outcomes.mjs --check` → PASS, all 7 arms ok; principle 10 green after the delta (packages/core/principles/10-research-patch-annotation.test.ts:34). ## Parked questions none — no §9 fork fired. The two §3.1/§3.2 re-derivations matched the kickoff's expected `{A:92, B:44, C:8, D:7}` and `{rows:151, groups:30}` (INFO lines re-emitted on every `--check` pass), the grouping key was not contested, no row's outcome contradicted `class_final` in the §3.6 sense (disagreement table empty), the §3.7 repair ceiling was never approached (0/5 eligible — DRIFTED count is 0), and the container clone was verified non-shallow before dispatch. ## §1.7 Self-discipline check (REQUIRED if PR touches discipline-bearing files) ### §1.7 Forward-check applied Disciplines checked before shipping, each with the artifact that binds it: - `.claude/rules/attention-is-not-a-mechanism.md` §1 — every load-bearing claim here is a deterministic gate, never «a reviewer will notice»: arm D binds each register row to a seat line (`scripts/triage-s4b-outcomes.mjs:1` driver, `--check` arm D), arm C re-verifies every witness against the live file, arm E recomputes all 49 report numbers from the CSV. The written-but-never-read artifact class that S2's arm E and S4's arm H (`scripts/triage-s4-score.mjs:474`) exist for is closed one layer down. - `.claude/rules/effort-worthiness.md` §1/§2 — L0 label `research-grade` is declared in the kickoff and honoured: the audit is the irreversible-in-consequence half (a register a repair umbrella will trust), while repair itself stays out of scope. §3.7's ceiling of 5 is the L4 budget tripwire; 0 rows qualified, so it never fired. - `.claude/rules/ai-laziness-traps.md` §2 — T1 (no sampling: all 151 rows disposed of by seats), T2, T3, T5, T14, T15, T20 governed execution and are enumerated with their evidence in the report's §traps section (`docs/meta-factory/research-patches/2026-08-16-triage-kernel-v2-s4b-outcome-audit.md:125`). - `.claude/rules/language-discipline.md` §1 — driver, register, report and this body are English. - `CLAUDE.md` `PR strategy` — three NEVER-DONE rows are register-only observations; none was fixed drive-by, and the two that sit outside §2's permitted files say so explicitly in the ranked table. ### §1.7 Backward-check applied Class of this change: **a stage that publishes counts in prose and gates them with its own arms** — the same W-7 «a stated number drifts from its own file invisibly» class S4 swept. Surfaces enumerated and verdicted: - `scripts/triage-s4b-outcomes.mjs` arm E — **SWEPT-CLEAN this PR**: all 49 canonical numbers are recomputed from the CSV and matched against the report **text**, which is the exact defect S4's round-1 cold seat found in its own arm E (`scripts/triage-s4-score.mjs:424`, fixed there). - `scripts/triage-s4-score.mjs:474` — CLEAN, re-run green this PR (8/8 arms); its frozen substrate is additionally re-frozen by this stage's arm F, which pins `triage-s4-score.mjs` itself — S4's own arm F does not (`scripts/triage-s4-score.mjs:437`). - `scripts/triage-s0-score.mjs:83` and `scripts/triage-s3-agreement.mjs:136` — **GAP-FOUND, still open**, inherited from S4's backward-check: neither reconciles any report number. Not fixed here — both are frozen substrate for this stage (arm F), so touching them is forbidden by §2, and widening reconciliation to sibling stages is outside the umbrella scope. Routed to S5 as an observation. - `docs/meta-factory/triage-corpus/README.md` — **narrowed this PR**: arm A(c) now asserts that every `s4b-*` artifact carries a Files-table row whose `rows=` token matches its real count, closing the never-listed half that `scripts/triage-s2-labels-check.mjs:140` structurally cannot see (its loop iterates README rows, so an absent row is invisible to it). The listed half stays gated by S2's arm D.
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
companion-reuse-deep-dive: re-evaluates oh-my-openagent multi-plan selection (5-level recency fallback), Categories System, 11-agent architecture, and alias routing under corrected within-one-project scope.Doriandarko/oh-my-openagentdoes not exist (GitHub 404 + DeepWiki 404 confirmed). Canonical repo iscode-yeongyu/oh-my-openagent(59.6k★). SSOT fix(hooks): force visible "🟢 Простыми словами" block in end-of-turn reminder #81 cites a non-existent owner — flagged for correction.session-plan-affinityrecency algorithm (findRecentSessionPlanPath).[next-available-slot]forsession-plan-affinitypattern (ADOPT VOCABULARY, ~85% match).§1.7 Forward-check applied
build-first-reuse-default.md §3: 6-layer search — SSOT docs(rules): add dual-implementation discipline (D2) #68/fix(hooks): force visible "🟢 Простыми словами" block in end-of-turn reminder #81 consulted; DeepWiki ≥5 phrasings (§2.1-§2.5); owner disambiguation viagh api+ DeepWiki structure check (§1.5); T16 problem-class checks per sub-finding.phase-research-coverage.md §1.7: patch carries §6 Forward + §7 Backward checks.doc-authority-hierarchy.md §2-§3: Authoritative-for header present; scope annotation<!-- scope:companion-reuse-omo-deep-dive -->on first line (principle 10 compliant).no-paid-llm-in-ci.md §1: no paid LLM;gh api+ DeepWiki MCP + pre-push hook (deterministic) only.gh apioutput missing from §1.5 — added for T3 compliance).§1.7 Backward-check applied
2026-05-23-meta-orchestrator-prior-art.mdand2026-05-26-meta-orchestrator-mode-triage-prior-art.mdNOT modified (amendments proposed forprior-art-evaluations.mdonly)..claude/rules/*.mdmodified. Nopackages/core/principles/*.test.tsmodified. No substrate edits.How to verify
docs/meta-factory/research-patches/2026-05-26-companion-reuse-omo-deep-dive.md— 362 lines, sections §0-§8 complete,<!-- scope:companion-reuse-omo-deep-dive -->on line 1gh apiraw output verbatim quoted<!-- scope:... -->annotation on first line (principle 10) — confirmed in commitScope-out
prior-art-evaluations.mdin a separate maintainer-applied commit.