docs(adr): correct ADR 0036 status — admin_ui/ is an unwired scaffold, not delivered work - #960
Conversation
…, not delivered work ADR 0036 was accepted 2026-08-27 claiming the Python backend "will eventually serve the compiled static assets" of an embedded React+Storybook admin frontend. An org-wide hollow-path audit (2026-08-31) confirmed admin_ui/ is still the completely unmodified Vite react-ts + Storybook starter template (default App.tsx, Button/Header/Page stories, default react.svg/vite.svg assets), with zero references to it anywhere in the repo outside the ADR and the directory itself (excluding pnpm-lock.yaml/pnpm-workspace.yaml bookkeeping). No CI workflow builds it, and server.py/__main__.py have no static-asset-serving wiring. contextual_orchestrator/admin.py remains the entire, unchanged /admin surface actually served. The ADR also went unreconciled with ADR 0033 (accepted 2026-08-23), which deliberately keeps the console as inline stdlib HTML and defers a React/Storybook toolchain until one of three explicit triggers is met — none of which has been met. Downgrade status from Accepted to Proposed, add an Implementation Status section documenting the gap precisely, cross-reference ADR 0033, and add a Path to Acceptance section so re-promoting this decision requires either meeting ADR 0033's triggers and actually building/wiring admin_ui/, or a fresh ADR that explicitly reconciles the two. No code changes; docs-only. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015Gs7KmNvH75nxz1sL8mKjw
|
Warning Review limit reachedNext included review available in 1 minute. View limit detailsLimit details: You’ve used the included review currently available. You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Review configuration: ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Team Run ID: 📒 Files selected for processing (2)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
…file) Devin review on PR #960 correctly flagged that the "None of the above has been executed beyond scaffolding step 1" line understated progress: root package.json declares a Corepack packageManager pin (pnpm@11.24.0+...) and pnpm-lock.yaml is checked in with a resolved admin_ui workspace entry — decision item 2 is done. Items 3 (Storybook component development) and 4 (backend serving compiled assets) remain unexecuted. Updates the Status, Implementation Status, and Decision sections to say so precisely instead of the previous blanket "none of the above" / "no part of the Decision" claims. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015Gs7KmNvH75nxz1sL8mKjw
|
The reviewer LLM returned a response that wasn't valid JSON, and Generated by Claude Code |
Required
|
Required
|
|
Cross-PR integration contract: routing identity is provider-neutral |
|
Checked this PR's diff against #971's for the cross-PR contract above. Both touch Generated by Claude Code |
|
Contextual-Orchestrator와 관계한 것들을 같이 손보든 어쩌든 해결하세요. Bypass merge 필요하면 가능 (chicken and eggs 상황이라면) + NVIDIA NIM 만 쓰는 건 허용하지 않아요. Contextual-Orchestrator를 쓰세요. Timeout은 적어도 3시간으로 잡으세요. 120초 같은 건 당황스럽군요. |
|
Contextual-Orchestrator와 관계한 것들을 같이 손보든 어쩌든 해결하세요. Bypass merge 필요하면 가능 (chicken and eggs 상황이라면) + NVIDIA NIM 만 쓰는 건 허용하지 않아요. Contextual-Orchestrator를 쓰세요. Timeout은 적어도 3시간으로 잡으세요. 120초 같은 건 당황스럽군요. Strix가 6시간 이상 동작해서 취약점 잡는 것도 본 일이 있습니다. Opencode와 Noema 는 Coderabbitai 및 Devin 수준으로 실제로 리뷰를 하게 하시오. Strix도 보안 리뷰를 꼼꼼하게 하도록 하시오. 특히 보안 리뷰는 전체 코드로 수행하는 것입니다. Contextual-Orchestrator는 실시간으로 빠르면서 능력이 좋은 모델에 요청을 보내어 시간을 당기시오. |
|
Exact-head audit of |
|
Generated by Claude Code |
|
Update: after Generated by Claude Code |
Hollow-path finding
Org-wide audit finding (response to "빈 깡통 경로 너무 많다.."): ADR 0036 (admin UI) is marked Accepted but
admin_ui/is the untouched starter template.docs/planning/adrs/0036-embedded-react-storybook-admin.md(status: Accepted, 2026-08-27) says the Python backend "will eventually serve the compiled static assets" of an embedded React+Storybook frontend. Independently re-verified against currentorigin/main:admin_ui/is exactly the unmodified Vitereact-ts+ Storybook scaffold output — defaultApp.tsx("Get started" counter demo), defaultButton/Header/Pagestories, defaultreact.svg/vite.svgassets.admin_uianywhere else in the repo exceptpnpm-lock.yaml/pnpm-workspace.yaml(package-manager bookkeeping, not build/serve wiring)..github/workflows/builds, lints, or tests it (no Corepack/pnpm install step, novite build, nobuild-storybook).contextual_orchestrator/server.pyandcontextual_orchestrator/__main__.pyhave zero references toadmin_ui, a static-asset directory, or serving anything besidesadmin.py'sADMIN_HTML.contextual_orchestrator/admin.py(1779-line inline-JS admin console) is unchanged and remains the entire/adminsurface actually served.Additionally found while verifying: ADR 0036 was never reconciled with ADR 0033 (accepted 2026-08-23, four days earlier), which deliberately keeps the console as inline stdlib HTML and defers a React/Storybook toolchain until one of three explicit triggers is met (second reusable screen family, second consuming repo, or a new component-based frontend need). None of those triggers has been met, and
docs/product-technical-gap-baseline.md§6/§9 already treat ADR 0033's deferral as the operative decision ("This repository is a backend stdlib lab and has no frontend/Storybook tree"). So this wasn't just an unstarted scaffold — it's an unstarted scaffold whose ADR silently contradicts an already-accepted sibling ADR governing the same surface.Fix
This needed a product decision, not a mechanical one. Building out
admin_ui/(CI build step +server.pystatic-asset serving, replacingadmin.py) would reopen and override ADR 0033's reasoned, triggered deferral unilaterally — out of scope for an automated hollow-path fix. Instead, corrected ADR 0036 itself (docs-only, single file):status:accepted→proposed.## Status: now explains the downgrade and links ADR 0033.## Implementation Statussection: states precisely what exists today (unmodified scaffold, no CI wiring, no server wiring,admin.pystill serving) so this can't silently regress into "hollow" again.## Path to Acceptancesection: re-promotion requires either meeting one of ADR 0033's explicit triggers and actually building/wiringadmin_ui/, or a fresh ADR that explicitly reconciles the two — not a silent re-acceptance.related:frontmatter now cross-references ADR 0033 asconflicting.No code changes. Scoped to exactly this finding — did not touch
admin_ui/, ADR 0033, ordocs/product-technical-gap-baseline.md(the latter's narrative section 1167-1168 also slightly overstates this as "delivered"; flagged as a separate follow-up, not fixed here, to keep this PR minimal).Validation
tests/test_planning_adr_identifiers.py,tests/test_paper_contracts.py,tests/test_repository_security_metadata.py— pass (frontmatterid/heading consistency preserved).interrogate— 100% (docs-only change, no Python touched).coverage run -m pytest tests --ignore=tests/fuzz -x— 1903 passed, 1 pre-existing unrelated failure (tests/test_privacy_policy_analysis.py::test_pinned_mcp_client_renders_and_closes_camoufox_tab, anAttributeError: mcp module has no attribute 'Client'from an installed-mcp-package/version mismatch in this sandbox). Reproduced identically on unmodifiedorigin/mainviagit stash— confirmed pre-existing and unrelated to this change, not introduced by it.Co-Authored-By: Claude Sonnet 5 noreply@anthropic.com
Generated by Claude Code