Skip to content

handbook: LLM-index discoverability (#90) + Quality Gate / AI Usage / Planning restructure (epic #92) - #91

Merged
sn0wm1ku merged 18 commits into
mainfrom
i90-20260714-2120
Jul 16, 2026
Merged

handbook: LLM-index discoverability (#90) + Quality Gate / AI Usage / Planning restructure (epic #92)#91
sn0wm1ku merged 18 commits into
mainfrom
i90-20260714-2120

Conversation

@github-actions

@github-actions github-actions Bot commented Jul 14, 2026

Copy link
Copy Markdown

Summary

This branch carries two changes:

1. LLM-index discoverability (closes #90)

Make /llms.txt and /llms-full.txt discoverable to page-reading agents: a
visible, server-rendered hint baked into the static HTML (not display:none,
not a hydrated component), plus a <link rel="alternate"> head hint and a
robots.txt LLM-index line. A neutral WebFetch of a page reliably surfaces
visible text; a hidden hint does not.

2. Handbook restructure — epic #92, fully delivered (closes #92)

Reorganise the handbook around OSBR's own spine — a 3-lens Quality Gate
(Reliability / Security / Sustainability) as the definition of done, an
AI-native operating model, and a pre-work Planning phase — keeping the
existing policies as the standards the gate references rather than restates.

  • 33 full standard pages (12 Engineering Standards, 8 AI operating model,
    8 Planning, 4 Design, 1 Privacy Policy) with 4 concise hub pages; sidebar
    fully wired. Every Epic: Close the gaps between the handbook and the engineering standard #92 checklist item is closed — see the Epic: Close the gaps between the handbook and the engineering standard #92 full-delivery
    comment for the item-to-page mapping.
  • Jurisdiction: legal pages ground on Malaysia's PDPA 2010 (+2024
    amendment), with Japan's APPI and the EU/US baseline layered on.
  • Review mechanism: the AI code review is run by the engineer from their
    own agent (/code-review, asvs-audit) when a change is declared
    Impl Review — alongside CI, not part of it.
  • Adversarial content review applied: contradictions found across the
    hubs/standards/legal pages (gate board position, PII-masking and
    real-dependency requirement levels, legacy dev-guide defects) were fixed in
    this PR.

Test Plan

🤖 PR body updated by Claude Code

sn0wm1ku and others added 2 commits July 14, 2026 21:02
The plugin already injects a display:none hint, but WebFetch-style tools
summarize a page and drop hidden DOM, so a neutral fetch misses it (which
is exactly why an LLM reading the site never learns /llms.txt exists).

Move the hint into visible, server-rendered HTML, plus redundancy:

- index.md: a visible (non-JS, SSG-baked) footer line pointing to /llms.txt
  and /llms-full.txt -- the load-bearing signal a WebFetch will surface.
- config.mts: link rel=alternate type=text/plain to both files for agents
  that parse the head.
- public/robots.txt: a visible "# LLM index: /llms.txt" line.

Not done: the matching HTTP Link response header (rel=alternate to /llms.txt).
GitHub Pages is a static host and cannot set custom headers. Add it if the
site moves to a host that can (Cloudflare Pages / Netlify).

Acceptance gate (run after deploy): a neutral-prompt WebFetch of the landing
page returns the /llms.txt line. Verified locally that the line is baked into
dist/index.html as visible text.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@sn0wm1ku

Copy link
Copy Markdown
Member

Checked this diff against the fix list in #90no gap found. All four layers are implemented:

#90 fix Status Where
1. Primary (load-bearing): visible, non-JS, server-rendered line on the landing page doc/index.md — plain markdown after the frontmatter, so SSG bakes it into the static HTML. Not display:none, not a hydrated component.
2. Convention: root /llms.txt + /llms-full.txt Already generated by vitepress-plugin-llms (doc/.vitepress/config.mts); no change needed.
3. Head (belt & suspenders): <link rel="alternate" type="text/plain"> doc/.vitepress/config.mts. The comment correctly records why there's no matching HTTP Link: header (GitHub Pages is a static host).
4. robots.txt visible LLM-index line New doc/public/robots.txt. Verified this actually serves at /robots.txt: build root is doc (vitepress build doc), so publicDir resolves to doc/public — same directory as the already-served favicon.svg / logo1.svg.

Two notes, neither blocking:

Nothing for me to ticket here — the implementation matches the spec. Ready for review/merge, then verify.


🤖 auto-posted by sn0wm1ku/ghDuty · co-authored by Claude (claude-opus-4-8)

…esign Guidelines, Ethical Design Policy

Restructure the handbook around OSBR's own spine — a 3-lens quality gate
(Reliability / Security / Sustainability) as the definition of done, the
AI-native operating model, and the pre-work planning phase — while keeping
the existing policies as the standards the gate references rather than
restates.

- doc/quality-gate.md (new): the three checks every change clears before
  Done; each lens carries code-level standards and references the
  Infrastructure Planning / Security policies and NFR for posture.
- doc/ai-usage-guideline.md (new): one engineer owning the whole with AI
  beside them — data boundaries, provider resilience, day/night rhythm,
  voice, policies-as-plugins, building for AI users.
- doc/design-guidelines.md (new): OSBR's UX/interaction standards
  (accessibility floor, self-explanatory UI, every state designed, modeless
  and reachable) — the counterpart to the code Style Guide.
- doc/ethical-design-policy.md (new): no deceptive/dark patterns; honest,
  symmetric, freely-given consent.
- development-guide.md: 1-10 Quality Gate and 1-11 AI Usage Guideline as
  short pointers to the new pages; add 2-2 "Repositories Are Not a Support
  Channel" and 2-4 "Planning & Shaping".
- sheq-policy.md: add policy-conformance auditing under Quality Assurance.
- config.mts: wire the four new pages into the sidebar.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@sn0wm1ku sn0wm1ku changed the title LLMs don't discover /llms.txt — page-reading agents miss the LLM index handbook: LLM-index discoverability (#90) + Quality Gate / AI Usage / Planning restructure (epic #92) Jul 15, 2026
sn0wm1ku and others added 10 commits July 16, 2026 11:00
Add a light value framing where the new pages talk about standards, using
the full value names:
- quality-gate: the three-check bar as Be Nice (care) / Be Kind (ownable) /
  Be Strong (find our own gaps).
- sheq-policy: policy-conformance auditing framed by the three values.
- ethical-design-policy: honest design as Be Nice made concrete.
- design-guidelines: getting the experience right as Be Nice in the interface.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Address over-consolidation: the hubs added earlier (Quality Gate, AI Usage
Guideline, Planning & Shaping, Design Guidelines) summarised ~50 source drafts
into thin sections. Restore workaholic-level depth by publishing each topic as
its own full standard page, with the hubs kept as concise overviews that
reference them.

New pages (31):
- Engineering Standards (Quality Gate references): testing-standards,
  observability-resilience, incident-management, code-review, ci-cd-pipeline,
  application-security, access-control, data-protection, supply-chain-risk,
  architecture-standards, repository-documentation-standards, api-design.
- AI operating model (AI Usage Guideline references): ai-data-handling,
  multiple-ai-agents, overnight-ai, weekly-ai-quota, voice-input,
  policies-as-plugins, building-for-ai-users.
- Planning (Planning & Shaping references): market-research,
  requirements-modeling, verify-before-building, cost-estimation,
  it-investment-evaluation, legal-compliance, domain-terminology,
  capability-over-track-record.
- Design (Design Guidelines references): accessibility, self-explanatory-ui,
  modeless-design, interaction-design.

Each page is OSBR's own voice, RFC-2119 MUST/SHOULD, tied to Be Nice / Be Kind /
Be Strong, standard industry terms, no competitor named.

Wiring:
- quality-gate: each lens now lists the standards it holds work to.
- ai-usage-guideline / design-guidelines / development-guide (Planning &
  Shaping): concise overviews with in-depth links to the full pages.
- config.mts: pages nested under Development Guide (Design Guidelines, Planning
  & Shaping, Quality Gate, AI Usage Guideline) in the sidebar.
- verified: no dangling internal links across doc/.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- meeting-recording (new): record/transcribe only with prior all-party
  consent, scope-limited use, retention/deletion; nested under AI Usage
  Guideline.
- privacy-policy (new): OSBR's organisation-level privacy notice
  (個人情報保護方針), distinct from the /data-protection engineering standard;
  added to Policies. Addresses #64.
- NFR: reconcile WCAG version 2.1 → 2.2 AA to match the HTML/CSS guide and the
  new Accessibility standard, and link to it.
- config.mts: sidebar entries for both new pages.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
… standard

Point §1 at the /code-review standard (always-on AI-automated review as the
default gate, security one of its three concerns, human accountable in the
loop) instead of mandating a human security reviewer — completing item A of
epic #92.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
A subagent left stray closing tags at the end of the file, which broke the
VitePress (Vue) build with "Invalid end tag". Removed them; docs:build now
passes cleanly (55 files, llms-full.txt generated).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The sidebar entry linked to the whole /development-guide page; point it at the
#_2-4-planning-shaping section anchor so it lands on the Planning & Shaping
section directly. Verified: docs:build passes.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Integrity review of the sidebar vs. page content found two gaps:
- Design Guidelines existed as a page and in the sidebar but was not mentioned
  in the Development Guide body; added §1-9 Design Guidelines (Database
  Guidelines, Quality Gate, AI Usage Guideline renumbered 1-10..1-12).
- Security Policy was an orphan — linked from many pages but absent from the
  sidebar; added it to the Policies group.

Verified: docs:build passes; no dead sidebar links, no orphan pages, no
dangling internal links, Planning & Shaping anchor resolves.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The privacy and legal pages were merged from Japan-context source drafts, so
they led with Japanese law (APPI, 特定商取引法) and omitted Malaysia. OSBR is
registered in Malaysia (home jurisdiction), has a Japanese parent studio, and
aims to follow international standards — so every jurisdiction reference is now
ordered Malaysia -> Japan -> EU/US, adding Malaysia as the lead without removing
the Japanese or GDPR content.

- privacy-policy: rewritten on Malaysia's PDPA 2010 (Act 709) + 2024 amendment
  — the seven principles, the Personal Data Protection Commissioner, mandatory
  breach notification, DPO, data portability, cross-border transfer — with APPI
  and GDPR/OECD/ISO as the Japan and international layers.
- legal-compliance: Malaysia leads (PDPA; Consumer Protection (Electronic Trade
  Transactions) Regulations 2024 + Electronic Commerce Act 2006 for seller
  disclosure), then Japan (APPI, 特定商取引法), then EU/US.
- incident-management: breach notification leads with the PDPA Commissioner,
  then APPI/PPC, then GDPR Art. 33/34.
- data-protection: PDPA added as the lead legal anchor throughout.
- ai-data-handling, meeting-recording: jurisdiction wording reordered MY->JP->EU.

Facts verified against pdp.gov.my and authoritative sources, not memory.
Verified: docs:build passes; no dangling links, no orphan pages.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@sn0wm1ku
sn0wm1ku requested a review from VibratingKoala July 16, 2026 05:52
@github-actions github-actions Bot added the ci-testing Enable a GitHub Action for unit testing on a pull request. label Jul 16, 2026
sn0wm1ku and others added 4 commits July 16, 2026 15:35
An adversarial content review across the hubs, standards, and legal pages
found requirement-level mismatches and board/wording contradictions:

- quality-gate: the gate holds at Impl Review (before merge) — the previous
  "between Impl Review and Done" wording contradicted the board, where
  Shipping/release sits in between; same fix in development-guide §1-11.
- quality-gate: masking personal data before a log or AI context is a MUST,
  matching incident-management's inviolable rule (was SHOULD).
- testing-standards §3-7: critical paths MUST run against real dependencies
  (the Quality Gate's bar); boundary code more broadly stays SHOULD.
- development-guide: Impl Review row now reflects the decided review stance —
  AI review is the default gate, a human interprets findings and owns the
  merge; Shipping/Done rows no longer disagree with the flowchart on when the
  issue closes; legacy typos fixed (piplines, short-descripted, belongs our);
  bookmark-bar rule aligned to the Security Policy's actual scope (project or
  client names).
- ai-usage-guideline: add Meeting Recording to the in-depth list (it is nested
  there in the sidebar).

Verified: docs:build passes; cross-link consistency and dangling-link checks
clean.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The review mechanism was written as an "always-on" gate, which is not how it
works: the AI agent lives on each member's own machine, carrying OSBR's
review tooling — the /code-review plugin and, for security-sensitive surfaces,
the asvs-audit plugin (osbrjp/DevTool) — and the review is performed when a
change is declared Impl Review, before merge.

- code-review: mechanism, trigger, and tooling stated; "always-on" framing
  replaced with run-at-Impl-Review throughout.
- quality-gate, development-guide (Impl Review row), security-policy §1:
  definitional wording aligned.
- 13 other pages: referential "the always-on review" rephrased to "the AI code
  review".

Verified: docs:build passes; only remaining "always-on" is infra's
always-on servers.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@sn0wm1ku

Copy link
Copy Markdown
Member

Follow-up to my 2026-07-15 comment — 15 new commits since (a81094f9056bdc) grew this PR from the #90 fix into the full epic #92 delivery, so I re-checked the expanded scope. Still no gap found; nothing to ticket.

Epic #92 (restructure + 33 standard pages):

  • All 33 pages listed in the Epic: Close the gaps between the handbook and the engineering standard #92 full-delivery comment are present in this diff (12 Engineering Standards, 8 AI operating model, 8 Planning, 4 Design, plus /privacy-policy), alongside the 4 hub pages (/quality-gate, /ai-usage-guideline, /design-guidelines, /ethical-design-policy).
  • Sidebar wiring verified against config.mts at head 9056bdc: every new page is linked (Design Guidelines, Planning & Shaping, Quality Gate, and AI Usage Guideline groups nested under Development Guide; Ethical Design + Privacy Policy under Policies), and every sidebar link resolves to a page in this PR or a pre-existing doc.
  • The Epic: Close the gaps between the handbook and the engineering standard #92 checklist itself has zero unchecked items remaining.

#90 (LLM-index discoverability): the four layers assessed in my previous comment are unchanged and intact.

Remaining before closing the issues — same two items as before, still non-blocking for review:

  1. npm run docs:build has not been run anywhere yet (per the Test Plan). Worth one run where deps are installed before merge — 33 new pages is exactly where a dead internal link would surface.
  2. LLMs don't discover /llms.txt — page-reading agents miss the LLM index #90's acceptance criterion (neutral-prompt WebFetch of the deployed landing page returning the /llms.txt line) is only checkable post-deploy.

One stale-wording nit: the PR body still says "see that issue's progress comment for the … still-open list", but the later #92 comment reports all items closed — worth a one-line body touch-up so reviewers don't hunt for a gap that no longer exists.

Ready for the requested review.


🤖 auto-posted by sn0wm1ku/ghDuty · co-authored by Claude (claude-opus-4-8)

@sn0wm1ku

Copy link
Copy Markdown
Member

Both non-blocking items from the ghDuty re-check are now addressed in the PR body:

  1. docs:build — has been run locally (pnpm): 55 markdown files, llms-full.txt generated, zero errors; sidebar/page integrity checks (no dead links / orphans / dangling internal links) also pass. Test Plan updated to record this.
  2. Stale "still-open list" wording — removed; the body now states epic Epic: Close the gaps between the handbook and the engineering standard #92 is fully delivered and points at the item-to-page mapping comment.

#90's neutral-WebFetch acceptance check remains the one post-deploy step, noted in the Test Plan.

🤖 Posted by Claude Code

@sn0wm1ku sn0wm1ku left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Reviewed across mechanical checks (no competitor mentions, no draft/XML leftovers, link + sidebar integrity, build passing) and an adversarial content pass (contradictions found were fixed in-branch: gate board position, requirement-level mismatches, review mechanism, jurisdiction grounding). ghDuty's re-check reports no gap; remaining item is #90's post-deploy verification, recorded in the Test Plan.

🤖 Approved via Claude Code on the author's instruction

@sn0wm1ku
sn0wm1ku merged commit aeb1889 into main Jul 16, 2026
1 check passed
@sn0wm1ku
sn0wm1ku deleted the i90-20260714-2120 branch July 16, 2026 09:39
This was referenced Jul 16, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci-testing Enable a GitHub Action for unit testing on a pull request.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Epic: Close the gaps between the handbook and the engineering standard LLMs don't discover /llms.txt — page-reading agents miss the LLM index

2 participants