Skip to content

factory(meta): Otto-364 — search-first authority (generalises Otto-247) + post-#855 vocabulary disjointness fix#856

Merged
AceHack merged 2 commits intomainfrom
otto-364-search-first-authority-2026-04-29
Apr 29, 2026
Merged

factory(meta): Otto-364 — search-first authority (generalises Otto-247) + post-#855 vocabulary disjointness fix#856
AceHack merged 2 commits intomainfrom
otto-364-search-first-authority-2026-04-29

Conversation

@AceHack
Copy link
Copy Markdown
Member

@AceHack AceHack commented Apr 29, 2026

Summary

Lands Otto-364 — generalises Otto-247 (version-currency, narrowly version-numbers) to all authoritative claims: tools, standards, APIs, runtimes, libraries, CI services, security policies, conventions.

Plus fixes a post-merge Codex P2 catch on closed #855 (vocabulary disjointness violation in CLAUDE.md + AGENTS.md bootstrap pointers).

Carved blade (Aaron verbatim)

"we want atest for all those from searches to not historical truth like the porject or your training data so search"

"Training data is historical. Project state is historical. Current upstream docs are the test. Search first. Cite second. Assert third."

What's in this PR

File Purpose
docs/research/2026-04-29-aaron-search-first-authority-not-training-data-not-project-memory.md Verbatim Aaron packet + four web-search verifications of Amara's CI-classifier-design claims (each produced a sharper finding than training-data recall)
memory/feedback_otto_364_search_first_authority_not_training_data_not_project_memory_aaron_2026_04_29.md Distilled doctrine memory — rule + when-it-fires + when-MAY-skip + citation hygiene + composes-with map
memory/MEMORY.md Paired index entry (newest-first)
CLAUDE.md Version-currency bullet generalised to Otto-364 search-first-authority. Both Otto-247 (narrow) and Otto-364 (broad) cited. Otto-247 NOT superseded.
AGENTS.md Vocabulary disjointness fix
CLAUDE.md (also) Vocabulary disjointness fix

Demonstrated by application

Per Otto-363 (substrate-or-it-didn't-happen) AND Otto-364 itself, the rule must be demonstrated, not just asserted. Did both.

Four web searches against current authoritative sources verified Amara's CI-classifier claims. Each search produced a sharper finding than training-data recall:

  1. Bun ci/lockfile — verified at bun.sh/docs/pm/lockfile + bun.sh/blog/bun-lock-text-lockfile. Sharper: text-based bun.lock is v1.2.0+ default; binary bun.lockb is legacy. Zeta has neither — first-implementation decision point.

  2. GitHub Actions paths-ignore + required checks — verified at docs.github.com troubleshooting required status checks + Discussion #54877 + Discussion #44490. Sharper: required checks remain Pending (not Skipped); three GitHub-blessed workarounds ranked, with classifier-pattern matching option (1) (conditional with success-on-skip).

  3. GitHub Actions cross-job outputs — verified at docs.github.com pass-job-outputs. Sharper: 1 MB per-job cap, 50 MB total — load-bearing for classifier-output JSON design.

  4. mise project config — verified at mise.jdx.dev/configuration.html + mise.jdx.dev/walkthrough.html. Sharper: both mise.toml and .mise.toml are valid; Zeta's dotfile form is fine.

Disjointness fix (Codex P2 from #855)

Codex P2 PRRT_kwDOSF9kNM5-i1UH caught a real surviving violation: CLAUDE.md and AGENTS.md bootstrap pointers still listed "GitHub Issue" as parked, contradicting the mutually-exclusive 5-tier taxonomy the Otto-363 memory file established. The doctrine memory was correct; the cold-start entry points were not.

Fixed: vocabulary lines in both CLAUDE.md and AGENTS.md now read consistently with the doctrine memory — GitHub Issues live in host-durable-not-git-canonical, NOT in parked. The 5 classes are now mutually exclusive across all three surfaces.

Composes with

  • Otto-247 (memory/feedback_version_currency_*) — narrower predecessor (version numbers only). NOT superseded; remains the version-specific instance.
  • Otto-363 (substrate-or-it-didn't-happen) — search results in chat are weather; cited in research doc are substrate. Same family.
  • Otto-362 (intra-file supersession) — Otto-364 is the upstream-vs-recall version of the stale-claims-must-be-refreshed family.
  • best-practices-evidence-lineage rule — Otto-364 is the search step of evidence collection.

Test plan

  • Memory file frontmatter intact (name + description + type + supersedes + superseded_by)
  • Paired MEMORY.md row added in same commit (mechanical paired-edit check)
  • Verbatim Aaron packet preserved per Otto-363
  • Four web searches cited with markdown URLs (citation hygiene per Otto-364 itself)
  • CLAUDE.md generalisation NOT supersede Otto-247 — both cited
  • CLAUDE.md + AGENTS.md vocabulary lines now mutually-exclusive across 5 classes
  • No code changes; doc-only

🤖 Generated with Claude Code

…ness fix (Aaron 2026-04-29)

Aaron's correction post-#855-merge:

> we want atest for all those from searches to not historical truth
> like the porject or your training data so search

Two distinct sources of "historical truth" called out:

  1. Training data (Jan 2026 cutoff) — Otto's parameters
  2. Project state — what's in the repo today, may itself be stale,
     copy-cargo-culted, or never-current-to-begin-with

Both are historical. Neither substitutes for current authoritative
upstream sources. The test for any load-bearing claim is a fresh web
search.

This generalises Otto-247 (version-currency rule, narrowly scoped to
version numbers) to ALL authoritative claims — tools, standards, APIs,
runtimes, libraries, CI services, security policies, conventions.

Carved blade:

  Training data is historical.
  Project state is historical.
  Current upstream docs are the test.
  Search first. Cite second. Assert third.

## Demonstrated by application

Per Otto-363 (substrate-or-it-didn't-happen), this rule must itself
land as substrate. Per Otto-364 itself, it must be demonstrated, not
just asserted. Did both.

Four web searches against current authoritative sources verified
Amara's CI-classifier-design claims. Each search produced a sharper
finding than training-data recall:

  1. Bun ci/lockfile semantics
     Sources: bun.sh/docs/pm/lockfile,
              bun.sh/blog/bun-lock-text-lockfile
     Sharper: bun.lock (text) is v1.2.0+ default; legacy bun.lockb
              binary form is being phased out. Zeta has neither
              committed yet — first-implementation decision point.

  2. GitHub Actions paths-ignore + required checks
     Sources: docs.github.com/en/pull-requests/.../troubleshooting-
              required-status-checks,
              github.com/orgs/community/discussions/54877,
              github.com/orgs/community/discussions/44490
     Sharper: Required checks remain Pending (not Skipped) when
              paths-ignore matches. Three GitHub-blessed workarounds
              ranked: (1) conditional with success-on-skip — the
              classifier pattern, (2) dummy workflow same name +
              inverse path, (3) external dorny/paths-filter.

  3. GitHub Actions cross-job outputs
     Sources: docs.github.com/en/actions/how-tos/write-workflows/
              choose-what-workflows-do/pass-job-outputs,
              docs.github.com/actions/using-workflows/workflow-syntax-
              for-github-actions
     Sharper: 1 MB per-job output cap, 50 MB total per workflow.
              Load-bearing for classifier-output JSON design.

  4. mise project config
     Sources: mise.jdx.dev/configuration.html,
              mise.jdx.dev/walkthrough.html
     Sharper: Both `mise.toml` and `.mise.toml` are valid; Zeta's
              dotfile form is fine.

Verbatim packet + four search verifications preserved at:
  docs/research/2026-04-29-aaron-search-first-authority-not-training-
                data-not-project-memory.md

## Also fixed in this PR

Codex P2 PRRT_kwDOSF9kNM5-i1UH (filed on closed #855 just before merge,
caught real surviving disjointness violation): CLAUDE.md and AGENTS.md
bootstrap pointers still listed "GitHub Issue" as *parked*, contradicting
the mutually-exclusive 5-tier taxonomy the Otto-363 memory file
established. The doctrine memory was correct; the cold-start entry
points were not.

Fixed: vocabulary lines in both CLAUDE.md and AGENTS.md now read:

  *captured* (TaskUpdate — ephemeral) ≠
  *parked* (pushed WIP branch like wip/<topic>-<date>, optionally with
           draft PR — git-ref-backed; GitHub Issues are NOT parking
           surfaces, they live in the host-durable-not-git-canonical
           class) ≠
  *preserved* (git-native repo, committed + reachable-from-long-lived-
              ref + indexed) ≠
  *canonical* (accepted spec) ≠
  *operational* (enforced by tooling)

Now consistent with the canonical taxonomy. The 5-tier classifier the
recovery process / future lints depend on no longer self-contradicts
across CLAUDE.md, AGENTS.md, and the doctrine memory file.

## Files

  + docs/research/2026-04-29-aaron-search-first-authority-not-training-
                  data-not-project-memory.md (verbatim packet + four
                  search verifications)
  + memory/feedback_otto_364_search_first_authority_not_training_data_
                    not_project_memory_aaron_2026_04_29.md (distilled
                    rule + composes-with map)
  ~ memory/MEMORY.md (paired index entry, newest-first)
  ~ CLAUDE.md (Version-currency bullet generalised to Otto-364
              search-first-authority; vocabulary line fixed for
              taxonomy disjointness)
  ~ AGENTS.md (vocabulary line fixed for taxonomy disjointness)

## Composes with

  - Otto-247 (version-currency, narrower predecessor — NOT superseded;
    remains the version-specific instance)
  - Otto-363 (substrate-or-it-didn't-happen — search results in chat
    are weather; cited in research doc are substrate; same family)
  - Otto-362 (intra-file supersession — Otto-364 is upstream-vs-recall
    version of the stale-claims-must-be-refreshed family)
  - feedback_best_practices_evidence_lineage_survival_substrate_*
    (best-practice-evidence-lineage rule; Otto-364 is its search step)

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings April 29, 2026 19:37
@AceHack AceHack enabled auto-merge (squash) April 29, 2026 19:37
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: dec2647c36

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread CLAUDE.md Outdated
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Introduces the Otto-364 doctrine: “search-first authority” for any load-bearing upstream/tooling/API/policy claim (generalizing the earlier version-currency rule), and fixes a taxonomy/vocabulary disjointness regression in the CLAUDE.md + AGENTS.md bootstrap pointers.

Changes:

  • Adds Otto-364 as a new doctrine memory entry plus a research-grade source packet demonstrating the rule via four upstream verifications.
  • Indexes Otto-364 in memory/MEMORY.md (newest-first).
  • Updates CLAUDE.md and AGENTS.md bootstrap bullets to reflect the broader search-first-authority rule and to correct the “GitHub Issues” durability-class placement.

Reviewed changes

Copilot reviewed 5 out of 5 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
memory/feedback_otto_364_search_first_authority_not_training_data_not_project_memory_aaron_2026_04_29.md New Otto-364 doctrine memory: rule, triggers, skip cases, citation hygiene, and composition links.
memory/MEMORY.md Adds newest-first index entry for Otto-364.
docs/research/2026-04-29-aaron-search-first-authority-not-training-data-not-project-memory.md Preserves the source packet and demonstrates Otto-364 via four cited upstream searches.
CLAUDE.md Generalizes the version-currency bootstrap rule to search-first-authority and adjusts vocabulary wording to reflect the disjointness fix.
AGENTS.md Aligns bootstrap vocabulary wording with the corrected durability taxonomy (Issues are host-durable-not-git-canonical, not “parked”).

Comment thread CLAUDE.md Outdated
Comment thread AGENTS.md Outdated
…ntradiction

Three thread fixes from PR #856 review:

1. CLAUDE.md L320-338 (Codex P2 + Copilot P1): the same Otto-363
   bullet contained two contradictory claims — "PRs and issues are
   host-durable parking surfaces" then "GitHub Issues are NOT
   parking surfaces". Resolution: promote
   host-durable-not-git-canonical to its own enumerated class
   (5 → 6), and reword the earlier line to "host-durable-not-git-
   canonical surfaces" so both lines tell the same story.

2. AGENTS.md L279-288 (Copilot P1): same 5-vs-6 inconsistency.
   The underlying 5-tier channel taxonomy at L270-277 already had
   host-durable-not-git-canonical as a distinct tier; the vocabulary
   layer was under-counting. Now matches.

3. docs/research/2026-04-29-aaron-search-first-authority-...md L5
   (Copilot P1): "Status: Verbatim" was inaccurate because the
   document contains translation/analysis/demonstration sections
   beyond the verbatim Aaron quote. Reworded to clarify scope:
   "The quoted Aaron message is verbatim; the surrounding material
   is translation, analysis, and demonstration."

No new doctrine added. Smallest sufficient substrate (Otto-362 +
Otto-365 discipline). Operating-invariant maintenance, not a
new lane.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@AceHack AceHack merged commit 248e956 into main Apr 29, 2026
23 checks passed
@AceHack AceHack deleted the otto-364-search-first-authority-2026-04-29 branch April 29, 2026 19:52
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: fa3beab895

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread CLAUDE.md
Comment on lines +325 to +326
and GitHub Issues are host-durable-not-git-canonical
surfaces, NOT substrate; for doctrine-changing
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Keep PR durability class mutually exclusive

This line assigns all PRs to host-durable-not-git-canonical, but the same bullet later defines parked as including a pushed WIP branch “optionally with draft PR.” Those two labels are declared mutually exclusive, so this reintroduces a taxonomy contradiction for the common draft-PR parking flow and can cause agents to apply the wrong preservation workflow for parked work.

Useful? React with 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants