PL/SQL Intelligence について
PL/SQL Intelligenceは、データベースコードの変更を評価するチーム向けの、オフラインOracle PL/SQL解析エンジンとコマンドラインツール群です。パッケージを考慮した依存関係と意味モデルを構築し、不確実性を明示します。解析上の不足を記録してプライバシー検証済みのカバレッジ改善につなげます。MCPの提供は別リポジトリのoraclemcpが担います。
主な機能
- 01ANTLRバックエンドでPL/SQLを解析
- 02意味モデルと依存関係を構築
- 03リネージと変更影響を分析
- 04解析の不確実性を明示
- 05オフラインでSASTを実行
- 06プライバシー検証済みの解析カバレッジ改善を追跡
活用シーン
- 01パッケージ変更前に下流への影響を評価
- 02列の型変更で影響を受ける依存先を特定
- 03Oracleカタログのスナップショットでコードをオフライン分析
- 04記録した解析不足を基にパーサーのカバレッジを改善
MCP 対応
このリポジトリにはMCPサーバーは含まれず、MCPの提供は別のoraclemcpリポジトリに移管されています。解析器、意味モデル、カタログスナップショット、依存関係グラフ、リネージ、ドキュメント、SAST、変更影響分析のライブラリを同リポジトリから利用できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
docker run -i --rm ghcr.io/muhdur/plsql-mcp:0.6.3ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ghcr.io/muhdur/plsql-mcp:0.6.3stdioツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
PL/SQL Intelligence Engine
Rust による、オフラインでパッケージを考慮した Oracle PL/SQL コードインテリジェンスと、 自己修復型のカバレッジ・フライホイール。
Oracle PL/SQL を変更する前に、何が壊れるかを把握しましょう。
# Build the workspace and run the default test profile
git clone https://github.com/MuhDur/plsql-intelligence
cd plsql-intelligence
cargo build --workspace && cargo test --workspace
概要
課題。 大規模な Oracle 環境では、PL/SQL パッケージ、ビュー、 トリガー、テーブルが複雑な依存関係の網を形成しています。列の型や パッケージ仕様を 1 つ変更しただけで、下流の数百ものオブジェクトが 気付かないうちに無効になることがあります。それが判明するのは、本番環境で 再コンパイルに失敗したときです。既存のツールはそれぞれ、SQL デプロイ、 リネージ製品、SAST スキャナー、Oracle 独自の SQLcl MCP サーバーなど、 一部の領域をカバーしています。しかし、オフラインでパッケージを考慮した PL/SQL のセマンティクスを、明示的な不確実性の報告、依存関係の推論、 再コンパイル計画とともに、1 つのワークフローで提供するものはありません。
解決策。 実際の ANTLR バックエンドで PL/SQL を解析し、名前解決と
依存関係グラフを備えたセマンティック IR を構築して、変更の影響を報告する
レイヤー型 Rust ワークスペースです。アナライザーが確実な判断を下せない場合は、
誤った問題なしの結果を報告する代わりに、型付きの UnknownReason として
その旨を示します。この不確実性を正直に示す情報の供給源が USR Loop に
つながり、記録されたギャップを、プライバシーに配慮した検証済みのパーサーおよび
lowering の修正へと変換します。これにより、利用とともにカバレッジが積み重なります。
MCP は oraclemcp にあります
このリポジトリは現在、オフライン PL/SQL エンジン、ライブラリークレート、
コマンドラインツールを管理しています。MCP サーバー機能は、データベース接続層と
サーバーのライフサイクルがすでに存在する独立した
oraclemcp リポジトリに移りました。
以前の plsql-mcp ワークスペースクレートは、このリポジトリから削除されました。
公開済みの過去のバージョンは、配布終了に関する bead が完了するまで互換性のために
引き続き利用できます。新しい PL/SQL インテリジェンスの開発は、ライブラリークレートと
plsql / plsql-depgraph / usr-loop CLI を通じて進めてください。
独立したオープンソースプロジェクトであり、Oracle とは提携していません。Oracle クライアント ライブラリーは含まれておらず、オフラインエンジンにも不要です。
選ぶ理由
| 機能 | 内容 |
|---|---|
| オフライン優先 | コードと Oracle カタログのスナップショットをその場で読み取ります。分析にライブデータベースは不要で、テレメトリーはデフォルトで無効です |
| 実際のパーサーバックエンド | ANTLR で生成された Rust パーサーコードを plsql-parser-antlr にコミット済みです。通常のビルド時に JVM は不要で、損失のないトークンテープ(reconstruct(tape) == input)を備えています |
| 正直な不確実性 | 分析で確実な判断ができない場合、型付きの UnknownReason を出力します。完全性レポートが問題なしと誤判定することはありません |
| 依存関係の推論 | セマンティック IR、名前解決、権限モデル、ALL_DEPENDENCIES と照合できる依存関係グラフを備えています |
| USR Loop | 自己修復型のフライホイールです。記録されたギャップを、プライバシー検証済みのフィクスチャ、修正候補、フェイルクローズ方式の 9 段階適合性ゲートに変換します |
| 検証済みの積み上げ | CI のトリップワイヤーを備えた単調増加する coverage_index により、「カバレッジが積み重なる」ことを標語ではなく、検証可能な性質にしています |
| メモリー安全性 | ワークスペース全体で #![forbid(unsafe_code)] を設定しています |
比較
| ライブ DB が必要 | パッケージを考慮した PL/SQL のセマンティクス | 不確実性を誠実に示す | オフライン分析 | |
|---|---|---|---|---|
| SQL デプロイツール(Liquibase、Flyway) | はい | いいえ | いいえ | いいえ |
| リネージ/カタログ製品 | 製品による | 一部対応 | いいえ | 製品による |
| 汎用 SAST スキャナー | いいえ | いいえ | いいえ | はい |
| Oracle SQLcl MCP サーバー | はい | 一部対応 | いいえ | いいえ |
| PL/SQL Intelligence Engine | いいえ | はい | はい | はい |
ステータス
現在の開発ラインは、0.7.0 に向けたオフラインへの移行トラックです。ワークスペースは安定版チャンネルでビルドでき、plsql-mcp クレートは含まれなくなりました。プロジェクトはまだ 1.0 より前の段階のため、1.0 ラインに達する前に公開 API が変更される可能性があります。plan.md が引き続き正式な仕様であり、docs/plans/2026-06-29-offline-pivot-retire-plsql-mcp.md が MCP 分割の現在の廃止計画です。
- Cargo ワークスペースには 25 のメンバーがあります。
crates/配下の製品クレートが 20 個、tools/配下のツールクレートが 5 個です。 - 通常のソースインストールには安定版チャンネルのツールチェーンが必要です。Java が必要なのは、コミット済みの ANTLR パーサー出力を再生成する場合のみで、通常のビルド、テスト、CLI のインストールでは不要です。
- 製品向けバイナリは
plsql、plsql-depgraph、usr-loopです。それぞれに、エージェント向けのcapabilities、robot-docs、doctor、--robot-json/--robot-triageインターフェースがあります。 - MCP の提供は現在、
oraclemcpの責務です。このリポジトリは、oraclemcpが利用できるパーサー、セマンティックモデル、カタログスナップショットモデル、依存関係グラフ、リネージ、ドキュメント、SAST、変更影響分析、USR Loop のライブラリインターフェースを公開します。 - USR Loop はエンドツーエンドで実装されています。これには
plsql-accretionライブラリ、usr-loopツール、SHA ピン留めされた適合性ゲート、単調性トリップワイヤー、再実行可能な受け入れ証明scripts/usr_acceptance.shが含まれます。 AGENTS.mdには、自動エージェントがこのリポジトリでどのように動作するかが記載されています。
テストと検証
デフォルトのローカルプロファイルはオフラインで、安定版チャンネルを使用します。
cargo fmt --all -- --checkcargo clippy --workspace --all-targets -- -D warningscargo test --workspace --all-targetscargo test --workspace --doccargo bench --workspace --no-runcargo deny checkplan-lint、コーパスのライセンスチェック、解析成功チェック、ラボのゴールデンテスト、demo-no-db、オフライン誠実性の grep、オフライン境界 lint、USR 蓄積ゲート。
テストスイートを「テストダブルはどこにもない」という意味に捉えないでください。このリポジトリには、境界を固定するための意図的なテストダブルが含まれています。機能無効時のライブ XE センチネル、GitHub Action の投稿セルフテスト、無効な識別子を対象とするフェイルクローズの bindgen ラッパー、隔離された Oracle 接続のテストダブル、決定論的な USR 提案パスなどです。これらは、本番環境向けの未完成なプレースホルダーではありません。
非公開エステートの完了定義では、その境界を誠実に示しています。PLSQL_PRIVATE_ESTATE が存在しない場合、scripts/usr_acceptance.sh は estate-absent バナーを表示して正常終了し、エステート全体の証明を完了したとは主張しません。正式な完全証明には、エステートを備えたホストが必要です。
クイック例
# Build the workspace and run the default test profile
cargo build --workspace
cargo test --workspace
# Inspect the CLI contracts agents should read first
cargo run -p plsql-cicd --bin plsql -- capabilities
cargo run -p plsql-depgraph -- capabilities
cargo run -p usr-loop -- capabilities
# Clippy with the project's deny-warning policy
cargo clippy --workspace --all-targets -- -D warnings
# Predict change impact from a directory, diff, or changeset artifact
cargo run -p plsql-cicd --bin plsql -- predict ./changes --robot-json
# Inspect a serialized dependency graph
cargo run -p plsql-depgraph -- --graph depgraph.json doctor --robot-json
# Drive the USR Loop against an estate (read in place, nothing copied out)
cargo run -p usr-loop -- scan /path/to/estate
cargo run -p usr-loop -- cluster /path/to/estate
cargo run -p usr-loop -- propose /path/to/estate --from-scan
cargo run -p usr-loop -- doctor
# The re-runnable Definition of Done for the USR Loop
scripts/usr_acceptance.sh
USR Loop(自己修復型カバレッジ・フライホイール)
多くのアナライザーは、解析エラーや未解決の参照を失敗として破棄します。このアナライザーは、そうした情報を型付きで出所が明確な、最小化可能なオフライン成果物として記録し、修復します。規範的な仕様の全文は docs/plans/2026-05-19-usr-loop-self-healing-coverage-flywheel.md に、修復クラスのポリシーとゲートの誠実性マニフェストは docs/decisions/D3-usr-repair-class-policy.md にあります。
estate (read in place; no byte copied out)
│ plsql-engine analyze → typed diagnostics + UnknownReason + provenance
▼
[A] GAP CAPTURE filter repairable diagnostic classes → GapRecord
▼ (provenance only, never source bytes)
[B] MINIMIZE + smallest input that still triggers the same
PRIVACY-PROVE signature; every literal/identifier re-synthesized;
▼ a redaction-delta manifest proves zero leak
[C] CLUSTER/DEDUP N occurrences → 1 GapCluster, K representative
▼ fixtures
[D] PROPOSE one candidate diff, exactly one repair class
▼ (g grammar / l lowering / d typed degradation)
[E] CONFORMANCE GATE the 9-stage, fail-closed, sha-pinned bar
▼ pass ▼ fail
[F] LAND + LEDGER [F'] QUARANTINE-AS-OPEN-BEAD
apply on branch, file a provenanced bead naming the failing
add the fixture + stage; the gate is never weakened to admit it
a pinned test,
append one
content-addressed
ledger entry
▼
[G] ACCRETION TRIPWIRE the monotone coverage_index, CI-checked
不変条件(仕様の中核であり、すべてが努力目標ではなく強制されます)
| 不変条件 | 保証する内容 |
|---|---|
| I-PRIVACY | 顧客のバイト列が環境の外に出ることはありません。永続化されるすべての成果物は、構造的に同等な最小再現データとして再合成され、成果物ごとに漏えいがないことが証明されます(ゲートステージ G8)。プライバシーの証明に失敗した場合、実行を中止し、何も永続化しません。 |
| I-NO-REGRESSION | パッチが適用されるのは、コーパス全体で動作を維持することが証明された場合のみです。これには、損失のないラウンドトリップ、バックエンド適合性、ゴールデン同型性、単調な非回帰が含まれます。提案し、証明してから適用します。証明されていないものを自動マージすることはありません。 |
| I-NO-GAMING | カバレッジの向上が認められるのは、対象シグネチャの抽出された意味が、それに見合う形で測定可能なほど増加した場合のみです。ギャップを「修正」するために診断を抑制する変更は、G7 で自動却下されます。 |
| I-DETERMINISM | 同じ環境と同じエンジンコミットであれば、ギャップレコード、フィクスチャ、シグネチャ、候補セットはバイト単位で同一になります。永続化される成果物に、実時間、乱数、マップの反復順序は含まれません。 |
| I-PROVENANCE | すべてのレコード、フィクスチャ、候補、判定、適用済みパッチはコンテンツアドレス指定され、環境の実行から診断、フィクスチャ、差分、ゲート結果まで追跡できます。台帳は追記専用です。 |
| I-ISOLATION | パッチが変更できるのは、.g4 文法、plsql-parser-antlr のコード生成/低水準化、または型付き劣化分類器のみです。下流クレートに ANTLR 型を依存させたり、加法的でない形で公開コントラクトを破ったりすることはありません。 |
| I-MONOTONIC-VALUE | リリースを通じて、追跡対象の coverage_index は単調非減少です。値を下げるリリースは CI で失敗します。 |
適合性ゲート
scripts/usr_gate.sh は、順序が定められた 9 つのステージを実行します。すべてに合格する必要があり、フェイルクローズで動作します。
合格以外の結果はすべて候補を却下し、ビーズとして登録します。パッチを受け入れるためにゲートを緩めることは決してありません。
| ステージ | チェック |
|---|---|
| G1 | ビルド:plsql-parser-antlr --features antlr-codegen とワークスペース |
| G2 | コーパス全体と以前のすべての MinFixture に対する損失のないラウンドトリップ |
| G3 | バックエンド適合性(plsql-parser/tests/conformance.rs) |
| G4 | ゴールデン同型性、または明示的に列挙され、妥当性が説明されたゴールデン差分 |
| G5 | パニックが発生しないこと、およびファズターゲットの実行でクラッシュがゼロであること |
| G6 | 単調な非回帰(scripts/estate_correctness.sh、メトリクスがベースライン以上であること) |
| G7 | 不正操作の防止と誠実性:診断が減少するのは、それに見合う抽出の増加がある場合のみであり、姿勢が弱められていないこと |
| G8 | プライバシー:候補と追加されたすべてのフィクスチャについて、墨消し差分が検証済みであること。漏えいがあれば実行を中止 |
| G9 | 追加された回帰テストがミューテーションで検出されること(パッチを元に戻すと失敗すること) |
ゲートスクリプトはコンテンツで固定されています。crates/plsql-accretion/gate.sha256
には期待される sha256 が記録され、plsql-accretion のゲートランナーは
不一致があると中止します。ゲートを変更するには、意図的な人間によるレビュー済みコミットと、sha の更新が必要です。crates/plsql-accretion/tests/gate_selftest.rs は、
敵対的な 3 つの変更(抑制のみのパッチ、プライバシーを漏えいさせる
フィクスチャ、ラウンドトリップを破壊するパッチ)をゲートに与え、それぞれが指定されたステージで却下されることを検証します。
coverage_index とトリップワイヤー
coverage_index = extracted_semantics_ratio (frozen public corpus
benchmark, never
private estate code)
+ distinct_resolved_gap_signatures (signature classes the
loop has permanently
closed, from the
append-only ledger)
(必須の CI チェックである)scripts/accretion_tripwire.sh は、
coverage_index(HEAD) >= coverage_index(last release tag) および
extracted_semantics_ratio(HEAD) >= extracted_semantics_ratio(last release) を検証します。
新しい CI チェックアウトでは、追跡対象の決定論的シードである
crates/plsql-accretion/accretion_floor.json と比較します。そのため、.usr/ledger/ が一時領域でも、最初の基準値は保持されます。どちらかのメトリクスを下げるリリースは失敗します。
coverage_index の経時変化を示す表は CHANGELOG.md にあります。
完了の定義
scripts/usr_acceptance.sh は、再実行可能な単一の受け入れ基準です。
これは「ビルドできているように見える」ことを確認するチェックではありません。ループを実行し、プライベートな環境に実際に存在する未解決の課題をエンドツーエンドで解消したうえで、すべての不変条件が維持されたことを検証します(出所、プライバシーが実証されたフィクスチャー、ゲートの終了コードが 0 または正しく隔離されていること、署名の厳密な減少、extracted_semantics_ratio の厳密な増加、状態の維持、台帳へのちょうど 1 回の追記、ミューテーションテストによるテストの無効化、敵対的ゲートのセルフテストの成功、バイト単位で同一の 2 回の実行)。プライベートな環境が設定されていない場合、スクリプトは大きく「estate-absent」と表示して終了コード 0 で終了し、その環境では DoD が実証されていないことを示します。CI では受け入れ証明全体を毎晩実行します(.github/workflows/usr.yml)。
アーキテクチャ
ワークスペースはレイヤー構造になっています(詳細は plan.md §5 および
docs/ARCHITECTURE.md を参照してください)。下流のクレートは ANTLR が生成した
型に依存しません。
| レイヤー | クレート | 担当範囲 |
|---|---|---|
| 0 | plsql-core、plsql-output、plsql-render、plsql-store | 診断、完全性/不確実性、出力形式、コンテンツアドレス方式のキャッシュ |
| 1 | plsql-parser、plsql-parser-antlr | バックエンドに依存しないパーサーインターフェースと ANTLR バックエンド |
| 1.5 | plsql-catalog | Oracle カタログスナップショットモデルと安定した行の取り込み |
| 2 | plsql-ir、plsql-symbols、plsql-privileges、plsql-depgraph | セマンティック IR、名前解決、権限モデル、依存関係グラフ |
| 3 | plsql-engine | オーケストレーション:実行ごとの AnalysisRun、CompletenessReport |
| 4 | plsql-lineage、plsql-doc、plsql-bindgen、plsql-cicd、plsql-sast | リネージ、ドキュメント、Rust バインディング、変更セット計画、静的解析 |
| 5 | plsql-accretion、tools/usr-loop | USR Loop ライブラリとオーケストレーター |
| 外部 MCP | oraclemcp | MCP サーバー、Oracle 接続のライフサイクル、制御されたライブアクセス、およびこれらのエンジンクレートとの任意の統合 |
PL/SQL source + Oracle catalog snapshot
│
▼
plsql-parser-antlr (lossless tape + AST)
│
▼
plsql-ir → plsql-symbols → plsql-depgraph
│
▼
plsql-engine: AnalysisRun + CompletenessReport
│ │
▼ ▼
product surfaces typed UnknownReason exhaust
(lineage / docs / │
bindings / cicd / ▼
sast) plsql-accretion + usr-loop
(capture → fixture → gate → land)
ツールのバイナリ:plsql(変更影響、ドキュメント、SAST、doctor)、
plsql-depgraph(依存関係グラフのクエリ/説明/doctor)、usr-loop
(USR Loop オーケストレーター)、plan-lint、corpus-license-check、
corpus-bench、corpus-grow。
このワークスペースでは、MCP は意図的にバイナリとして提供されなくなりました。
サーバーが必要なエージェントは oraclemcp を使用してください。オフラインでの PL/SQL
インテリジェンスが必要なエージェントは、ライブラリクレートを直接呼び出すか、CLI を使用してください。
インストール
このワークスペースは、rust-toolchain.toml で固定された stable チャンネルでビルドできます。
ワークスペースの MSRV は Cargo.toml に rust-version = "1.96" として記録されています。
通常のインストールに Java は必要ありません。Java が必要になるのは、メンテナーが明示的に
ANTLR パーサーの出力を再生成する場合のみです。
リリース済み CLI のインストール
Linux および macOS:
curl -fsSL "https://github.com/MuhDur/plsql-intelligence/releases/latest/download/install.sh?$(date +%s)" | bash
Windows PowerShell:
irm "https://github.com/MuhDur/plsql-intelligence/releases/latest/download/install.ps1?$([DateTimeOffset]::UtcNow.ToUnixTimeSeconds())" | iex
インストーラーは最新の GitHub リリースを取得して SHA256SUMS を検証し、
plsql と plsql-depgraph をインストールして、アンインストール手順を表示します。
ソースからインストール
git clone https://github.com/MuhDur/plsql-intelligence
cd plsql-intelligence
cargo build --workspace --release
チェックアウトから CLI をインストール
cargo install --path crates/plsql-cicd --bin plsql
cargo install --path crates/plsql-depgraph
cargo install --path tools/usr-loop
Git から CLI をインストール
cargo install --git https://github.com/MuhDur/plsql-intelligence --package plsql-cicd --bin plsql
cargo install --git https://github.com/MuhDur/plsql-intelligence --package plsql-depgraph
cargo install --git https://github.com/MuhDur/plsql-intelligence --package usr-loop
クレート単位の開発
クレート単位でビルドすると、開発中のサイクルを短くできます。
cargo build -p plsql-catalog
cargo test -p plsql-accretion
デフォルトのオフライン CLI では、Oracle クライアントもデータベース接続も必要ありません。
コマンドリファレンス
ユーザー向けの主要なバイナリでは、共通の検索コマンドを利用できます。
<binary> capabilities # machine-readable agent contract
<binary> robot-docs # concise agent handbook
<binary> --robot-triage # capabilities + health + quick reference
<binary> doctor # local health report
plsql
変更影響、レンダリングされたドキュメント、SAST 成果物、ローカル診断を扱う、 リリース保証 CLI です。
plsql predict ./changes --robot-json
plsql predict --git-range main..HEAD --repo .
plsql doc docset.json --format markdown --robot-json
plsql sast scan-report.json --format sarif --robot-json
plsql doctor ./changes --robot-json
plsql capabilities
plsql robot-docs
plsql-depgraph
シリアライズされた依存関係グラフを読み込み、クエリまたは説明を行います。
plsql-depgraph --graph depgraph.json doctor --robot-json
plsql-depgraph --graph depgraph.json query reverse-neighbors --logical-id HR.PKG_ORDERS
plsql-depgraph --graph depgraph.json query path --from-logical-id HR.PKG_ORDERS --to-logical-id HR.TABLE_ORDERS
plsql-depgraph --graph depgraph.json explain --logical-id HR.PKG_ORDERS --robot-json
plsql-depgraph capabilities
usr-loop
USR Loop オーケストレーターです。グローバルフラグ --robot-json を指定すると、
すべてのサブコマンドで機械可読な単一行のエンベロープが出力されます。
usr-loop scan <estate> # [A] capture GapRecords
usr-loop cluster <estate> # [C] deduped GapClusters
usr-loop propose <estate> --from-scan # [D] one candidate diff
usr-loop propose <estate> --cluster-id ID # propose for a specific signature
usr-loop gate <candidate-diff> # run the sha-pinned §3 gate
usr-loop land <candidate> --fixture F # [F] gate, then land or quarantine
usr-loop ledger <action> # inspect the append-only ledger
usr-loop doctor # crate/schema versions, deps
gate/land の終了コード:0 は受け入れ/反映済み、3 は却下/隔離
(仕様どおりであり、バグではありません)、4 はゲートの sha-pin による中止、
9 は I-PRIVACY による中止(永続化されたものはありません)。
plan-lint
cargo run -p plan-lint -- # structural lint of plan.md
cargo run -p plan-lint -- --robot-json # machine-readable findings
cargo run -p plan-lint -- --doctor # health summary
設計上のコミットメント
- コンポーネントごとにクレートを配置した Rust Cargo ワークスペースです。
- すべての CLI インターフェースに
doctorサブコマンドと--robot-json出力を用意し、エージェントが推測するのではなく、機械向けの契約を読み取れるようにします。 - 分析の確実性を担保できない場合は必ず
UnknownReasonレコードを明示します。網羅性レポートが誤って「問題なし」と判定することはありません。 - パーサーバックエンドを分離します。下流のクレートは ANTLR 生成型に依存してはなりません。
- ワークスペース全体で
#![forbid(unsafe_code)]を適用します。 - デフォルトではテレメトリーを収集しません。
リポジトリーのワークフロー
- まず
AGENTS.mdとplan.mdを読みます。 plan.mdを、意図するアーキテクチャとスコープの信頼できる情報源として扱います。コードとplan.mdに食い違いがある場合は、どちらかを意図的に修正します。- 作業の追跡には Beads のみを使用します。.beads/ が正式な情報源です。
- このリポジトリーに非公開の資料をコピーしてはなりません。USR Loop と正確性ハーネスは、
PLSQL_PRIVATE_ESTATE環境変数で指定されたパスにある非公開の資産をその場で読み取り、そのバイト列を永続化することはありません。
ディレクトリー構成
plan.md:マスター仕様AGENTS.md:リポジトリーの運用ルールCargo.toml、crates/、tools/:Rust ワークスペースcorpus/:テストで使用する公開および合成 PL/SQL フィクスチャdocs/:アーキテクチャのスナップショット、計画、決定事項、統合ガイドscripts/:usr_gate.sh、usr_acceptance.sh、accretion_tripwire.sh、estate_correctness.sh.beads/:Beads の課題トラッカーの状態(正式な情報源)CHANGELOG.md:リリースノートのログとcoverage_indexテーブル
トラブルシューティング
| 症状 | 対処方法 |
|---|---|
usr-loop gate が終了コード 4 で終了する | ゲートの SHA ピンが一致しません。ゲートスクリプトが変更されたのに、crates/plsql-accretion/gate.sha256 の SHA が更新されていません。これは意図的なフェイルクローズ動作です。再ピン留めは、レビュー済みのコミット経由でのみ行ってください。 |
usr-loop gate/land が終了コード 9 で終了する | G8 で I-PRIVACY の漏えいシグナルが検出されました。設計上、実行は中断され、何も永続化されていません。該当するフィクスチャを調べてください。G8 を弱めてはなりません。 |
usr_acceptance.sh が「estate-absent」バナーとともに終了コード 0 で終了する | 非公開の資産が設定されていません(PLSQL_PRIVATE_ESTATE が未設定または空です)。そのため、ここでは DoD が証明されていません。変数に非公開の資産へのパスを設定して実行するか、夜間 CI に頼ってください。 |
| パーサーの再生成に失敗する | 通常のビルドでは、コミット済みの生成済み Rust コードを使用します。再生成はメンテナーの作業です。Java をインストールし、PLSQL_ANTLR_REGEN=1 を設定してから、パーサーのドリフトチェックの手順を実行してください。 |
| 実際の資産で依存関係グラフが空になる | パーサーがまだ解析できない方言の末尾部分では想定どおりです。これらは型付きの UnknownReason として記録されます。これは USR Loop の修正入力そのものであり、気付かれないまま失敗しているわけではありません。 |
制限事項
- 1.0 より前の段階です。1.0 になるまでは、API がいつでも変更される可能性があります。
- このリポジトリーは、もはや MCP サーバーではありません。MCP のサービス提供、Oracle セッション、保護されたライブデータベースへのアクセスには
oraclemcpを使用してください。 - ライブ Oracle 抽出機能はこのリポジトリーにはありません。Oracle セッション、ライブカタログのスナップショット、保護されたデータベースへのアクセスには
oraclemcpを使用してください。 - USR Loop の提案機能は自動マージを行いません。証明済みの候補を生成します。証明は自動かつ完全ですが、取り込みの判断はその証明と、リポジトリーの通常のレビューによって制御されます(
D3に準拠)。 - Oracle の方言で真に曖昧な形式を推測で解決することはありません。正直な型付き
UnknownReason(修正クラスd)になります。これは正直さの網羅性であり、捏造の網羅性ではありません。 - 累積は生の件数ではなく、シグネチャクラスに基づきます。単独でしか現れない資産固有の例外が長く残る場合があります。それは隠さず報告されます。
- クラス
gの文法パッチは、他のすべてと同様にゲートで管理される本格的な文法作業です。時間はかかりますが、健全性は保たれます。 - 参照整合性に基づくサブセット化は、最初のリリースではなく、別の将来計画に回されます。
FAQ
分析には稼働中の Oracle データベースが必要ですか? いいえ。分析はソースと任意のカタログスナップショットを対象にオフラインで行います。稼働中の Oracle へのアクセスは oraclemcp が担います。このリポジトリにはオフラインエンジンと CLI が含まれています。
パーサーは本物ですか、それともヒューリスティックなスキャナーですか? 本物です。エンジンは、ロスレスなトークンテープを備えた plsql-parser-antlr の ANTLR 生成 Rust バックエンドを通じて解析します。判断と根拠については docs/decisions/D2-backend-final.md をご覧ください。
パーサーが処理できない構文はどうなりますか? 来歴情報を伴う型付きの UnknownReason として記録されます。完全性レポートにはその内容が正直に反映され、誤って問題なしと報告されることはありません。
USR Loop は実際のエステートで N 個のギャップを解消しましたか? その主張を、確定したマーケティング上の事実としてここで述べてはいません。仕組みは実装済みで、再実行可能な scripts/usr_acceptance.sh と nightly CI がその証拠です。この README では実行方法を説明しており、検証できない誇張をしているわけではありません。
パッチを早く取り込むためにゲートを緩められますか? いいえ。ゲートは SHA に固定され、フェイルクローズ方式です。不一致があれば中止します。変更には、レビュー済みのコミットと意図的な SHA の更新が必要です。
unsafe なコードはありますか? ありません。ワークスペース全体で #![forbid(unsafe_code)] を指定しています。
ライセンス
以下のいずれかのライセンスを選択できます。
- Apache License, Version 2.0(LICENSE-APACHE)
- MIT license(LICENSE-MIT)
crates/plsql-parser-antlr/grammars/ にあるベンダー提供の ANTLR PL/SQL 文法は、antlr/grammars-v4 由来の Apache-2.0 であり、帰属表示は crates/plsql-parser-antlr/LICENSE-GRAMMARS.md に保持されています。
特に明記しない限り、Apache-2.0 ライセンスで定義されるとおり、あなたが本プロジェクトに含めるために意図的に提出した貢献は、追加の条件を伴わず、上記のデュアルライセンスの対象となります。
貢献について
貢献について: 誤解しないでいただきたいのですが、私のプロジェクトへの外部からの貢献は受け付けていません。何かをレビューするだけの余裕がなく、また、これには私の名前が付いているため、問題が起きれば私が責任を負います。そのため、私の立場ではリスクと見返りが大きく釣り合いません。ほかの「ステークホルダー」への配慮も必要になりそうですが、主に自分のために無償で作っているツールでは賢明ではないと思います。イシューや、修正案を示すための PR を送っていただいても構いませんが、それらを直接マージすることはありません。代わりに、gh 経由で Claude または Codex に投稿内容をレビューさせ、その内容に対処するかどうか、またどのように対処するかを独自に判断します。特にバグ報告は歓迎します。不快に感じられたら申し訳ありませんが、時間の浪費や気まずい思いを避けたいと考えています。コミュニティからの貢献を求める一般的なオープンソースの考え方とは合わないことは承知していますが、このペースで進め、正気を保つためには、これが唯一の方法です。
一緒に仕事をしませんか
企業の皆さまを対象に、大規模データベース、システムのモダナイゼーション、本番環境での AI といった難題の解決を支援しています。クラウドでもセルフホストでも、ベンダーに依存しない立場で取り組みます。データベース、Rust/C++、AI の難しい課題に取り組んでいますか?ぜひご連絡ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。