mirror of
https://github.com/morluto/rea.git
synced 2026-11-05 06:45:22 +00:00
Open
opened 2026-10-31 01:05:30 +00:00 by bsakaguchi
·
0 comments
No Branch/Tag specified
main
codex/procedure-reference-stacked
release-please--branches--main--components--rea-agents
release-please--branches--main--components--rea-agents--release-notes
codex/kuna-independent-retry
codex/byte-search-overlay-coverage
codex/open-failure-target-receipt
codex/kuna-xref-evidence
codex/ghidra-ambiguous-procedure-recovery
codex/function-source-bundle
codex/trace-function-integration-prototype
codex/snapshot-source-closure
codex/recorded-evidence-array-pages
codex/evidence-recovery-redesign
codex/trace-feature-address-scope
codex/call-discovery-scope
codex/ghidra-literal-candidate-evidence
codex/decompile-directory-independent-retry
codex/retry-provenance-base
codex/value-flow-capability-experiment
codex/ghidra-containing-instruction
cursor/readme-discord-button-ef9f
dependabot/github_actions/actions/setup-node-7.1.0
dependabot/github_actions/actions/upload-artifact-7.0.2
dependabot/npm_and_yarn/npm-minor-and-patch-d8d97ce6df
codex/kuna-1989
fix/8559-native-ui-fixture-ownership
fix/8555-go-verifier-mcp-ownership
codex/provider-capability-recovery
fix/8642-rizin-target-stdin
codex/ghidra-memory-effect-scope
codex/ghidra-annotation-entry-selector
codex/ghidra-readonly-recovery
codex/ghidra-regex-verifier-recovery
codex/evidence-discovery-view-guidance
fix/8545-bulk-append-overflow
fix/8428-navigation-refusal-alternatives
codex/address-context-recovery
codex/matching-member-limitations
codex/unknown-scope-contract
codex/evidence-view-guidance
feat/8373-native-trace-views
codex/ghidra-snapshot-verifier-binding
codex/elf-export-visibility
codex/evidence-view-recovery
codex/native-reference-cli-help
codex/provider-candidate-observation-scope
codex/kuna-session-verification
codex/ghidra-switch-lifetime-guidance
codex/pseudocode-paging-discovery
codex/clarify-evidence-view-support
codex/kuna-xrefs-selector-recovery
codex/context-capacity-recovery
codex/evidence-closure-large-links
codex/same-function-evidence-identity
codex/ghidra-verifier-inspected-jdk
codex/audit-guided-workflows
codex/crash-prompt-retained-dossiers
codex/analysis-view-error-recovery
codex/kuna-verifier-target-selection
codex/ghidra-selected-project-call-coverage
codex/docs-native-analysis-scope
codex/ghidra-java-socket-boundary
codex/ghidra-retained-snapshot-verifier
codex/ghidra-search-inventory-facts
fix/8284-zero-argument-parameter-bindings
fix/8198-ui-action-handler-offset
fix/8257-elf-entry-label-identity
fix/8304-deferred-output-schema-projection
fix/8277-call-path-computed-target-uncertainty
fix/pr-8089-conflicts
fix/ci-static-duplicate-export
dependabot/npm_and_yarn/lint-staged-17.6.0
dependabot/github_actions/actions/download-artifact-8.0.2
dependabot/npm_and_yarn/write-file-atomic-8.0.0
dependabot/npm_and_yarn/canonicalize-5.1.0
dependabot/github_actions/actions/cache/restore-6.1.0
dependabot/npm_and_yarn/toon-format/toon-4.4.0
dependabot/github_actions/actions/deploy-pages-5.0.1
codex/review-fixes-pr-2403
codex/review-fixes-pr-2400
codex/process-terminal-width
codex/test-brittleness-cleanup
verify/7167-browser-connect-macos
fix/7167-browser-connect
feat/native-matching-allowance-setting
feat/browser-scenario-dry-run
test/managed-caller-parameters-20261024
codex/parser-fortythird-boundaries
fix/6926-pinvoke-platform-decorations-20261023
fix/6889-har-body-encoding-20261023
fix/6888-sqlite-schema-budget-20261023
fix/dependency-security-gates-6708
cursor/evidence-overwrite-rebase-b4ac
feat/4057-verify-native-exports
fix/windows-acl-observer-overhead-20261022
cursor/erlang-beam-restack-4476
cursor/pe-certificate-review-bf32
fix/6116-javascript-application-fs-errors
fix/6061-unmapped-runtime-script-unknown
feat/browser-scenario-summary
fix/pe-certificates
codex/verify-3407
cursor/rebase-5699
cursor/rebase-5352
cursor/rebase-5600
cursor/fix-cli-schema-omission-10a8
codex/audit-hopper-shutdown-reasons-20261021
fix/demangle-swift-omitted-record
fix/nib-boolean-value-types
cursor/cancellation-partial-observation-a5ac
fix/ib-object-limit-reasons
fix/electron-fuse-limit-advice
fix/kuna-doctor-dangling-cache
fix/fixed-budget-refusal-advice
fix/js-ipc-listener-dedup
fix/js-return-member-provenance
fix/dmg-integrity-retry-advice
fix/ida-doctor-readiness
fix/kuna-version-probe-output-drain
fix/legacy-swift-runtime-name-matching
fix/dylib-lazy-load-commands
fix/browser-scenario-startup-cancel
fix/swift-nested-punycode-classification
fix/compare-unselected-scopes
fix/objc-method-budget-coverage
fix/dmg-mounted-root-observations
audit/ci-tests-20261019-round2
release/6.7.0
fix/wabt-cleanup-retry-resolution
fix/electron-fuse-elf-pe-architecture
fix/native-plist-descriptor-ownership
fix/kuna-caller-cleanup-ownership
experiment/atomic-codemode-20261016
review/first-contributor-3776
fix/call-resolution-full-read-cycles
fix/member-mutation-selection-repeat
experiment/atomic-re-tools-20261015
perf/member-mutation-lazy-origins
perf/static-network-mutation-index
fix/hopper-startup-lifecycle
audit/3050-windows-proof-20261015
feat/windows-window-capture-2183
audit/3049-windows-proof-20261015
audit/3735-macos-fixtures-20261015
fix/batch-decompile-null-pseudocode
fix/kuna-inventory-honors-jobs
experiment/browser-codemode-tool-design-20261015
fix/hopper-clean-runtime-argv
codex/review-2049-27f1b367
review-fixes/pr-2787-routing
fix/3360-scoped-this-emitters
fix/3367-replaced-global-effects
fix/3838-compact-any-value-items
test/hopper-download-probe-20261015
codex/windows-runtime-creation-red-green-20261015
codex/windows-readonly-root-red-green-20261015
codex/windows-root-share-red-green-20261015
codex/exp-1685-win-mcp-startup
codex/bug-sweep-20261015
investigate/2190-windows-package-phases
investigate/3543-macos-cli-deadline
perf/3281-reverse-tools-feedback-quality
fix/3406-hopper-doctor-fixture
fix/3341-wrapper-require-test-context
fix/3301-owned-uninstall-fixtures
fix/3164-compiler-input-ownership
fix/pcap-cleanup-stdout-newline-20261014
perf/interface-builder-summary
codex/review-fixes-pr-1977
fix/ghidra-effective-jvm-platform
fix/docs-turkish-rust-link-20261013
fix/main-maintenance-ci-20261010
fix/recover-binary-session-process-effects
codex/review-fixes-pr-2457
codex/ci-required-cancellation-gate
fix/main-format-baseline-20261013
fix/setup-preserve-entry-fields
cursor/restore-main-checks-1ffc
fix/ghidra-bridge-hashmap-import
codex/shared-ci-jadx-json-default-20261013
codex/shared-ci-ghidra-test-groups-20261013
codex/shared-ci-java-fixture-format-20261013
codex/fix-intrinsic-invocation-boundaries
test/release-preflight-reusable-jobs
test/js-parameter-provenance-expectation
fix/linux-hopper-verification-current
test/2419-ghidra-elf-probe-size
followup/pr-1544-native-ida
codex/fold-pr-2230-contribution
docs/readme-responsible-use
fix/issue-2064
fix/issue-2050
fix/issue-2053
fix/issue-1968
fix/issue-1945
experiment/codemode-bridge-20261011
fix/tool-effects-negative-wording-1904-20261012
fix/1842-electron-interop-provenance
feat/recover-javascript-multi-input
refactor/website-i18n-prep
fix/nativeaot-pe-virtual-extent
fix/browser-verifier-ci-hang
fix/pe-resources-input-selection
docs/beginner-friendly-guides
docs/beginner-setup-guide
fix/javascript-analysis-worker-1563
fix/1649-ghidra-duplicate-names
fix/javascript-export-keys-integration-1369
test/maintenance-boundary-contracts-20261011
review/javascript-export-keys-1369
review/process-live-progress-1483
test/javascript-1495-growth-ratio
fix/ci-escape-timing
docs/normalized-terminal-geometry-1450
release/6.3.0
archive/release-6.3.0-pr1381
release/6.2.0
fix/electron-preload-dynamic-override
fix/javascript-self-referential-bundler-edges
release/6.1.0
cursor/grok-client-cherry-pick-0b56
feat/signature-posture
feat/dyld-shared-cache
feat/artifact-integrity-policy
feat/pkg-inventory
release/6.0.0
chore/sync-release-5.0.0
release/5.0.0
cursor/cloud-agent-node-787e
fix/javascript-xhr-open-endpoints
review/pr-711-realpath-fallback-wording
cleanup/replay-confinement
codex/test-suite-performance
codex/issue-foundations
codex/address-open-issues-2026-07-20
agent/javascript-vite-rollup-esbuild-adapters
agent/process-cleanup
agent/triage-integration
agent/unknown-commands-registry
feat/mcp-identity-metadata
morlvps/issue_cleanup
codex/installer-redesign
morl/roadmap-investigation-core
morl/roadmap-investigation-docs
release-please--branches--main--components--rea
rea-agents-6.8.0
rea-agents-6.7.0
rea-agents-6.6.0
experiment/atomic-codemode-wait-runtime-20261016
rea-agents-6.5.0
rea-agents-6.4.0
rea-agents-6.3.0
rea-agents-6.2.0
rea-agents-6.1.0
rea-agents-6.0.0
rea-agents-5.0.0
rea-agents-4.1.0
rea-agents-4.0.1
rea-agents-4.0.0
rea-agents-3.2.1
rea-agents-3.2.0
rea-agents-3.1.0
rea-agents-3.0.0
rea-agents-2.7.0
rea-agents-2.6.0
rea-agents-2.5.1
rea-agents-2.5.0
rea-agents-2.4.0
rea-agents-2.3.0
rea-agents-2.2.0
rea-agents-2.1.0
rea-agents-2.0.0
rea-agents-1.7.0
rea-agents-1.6.0
rea-agents-1.5.0
rea-agents-1.4.0
rea-agents-1.3.0
rea-agents-1.2.0
rea-agents-1.1.0
rea-agents-1.0.0
rea-agents-0.5.0
rea-agents-0.4.0
rea-agents-0.3.0
rea-0.2.1
rea-0.2.0
Labels
Clear labels
area: bridge
area: bridge
area: build
area: build
area: build
area: cli
area: domain
area: evidence
area: mcp
area: native
area: providers
area: runtime
area: server
area: setup
area: tests
bug
design
documentation
enhancement
enhancement
enhancement
experiment
help wanted
i18n
invalid
P0: critical
P1: high
P2: medium
P2: medium
P2: medium
P3: low
performance
provider-request
pull-request
Mirrored from GitHub Pull Request
question
roadmap
triage
No labels
area: bridge
area: bridge
area: build
area: build
area: build
area: cli
area: domain
area: evidence
area: mcp
area: native
area: providers
area: runtime
area: server
area: setup
area: tests
bug
design
documentation
enhancement
enhancement
enhancement
experiment
help wanted
i18n
invalid
P0: critical
P1: high
P2: medium
P2: medium
P2: medium
P3: low
performance
provider-request
pull-request
question
roadmap
triage
Milestone
Clear milestone
No items
No milestone
Projects
Clear projects
No items
No project
Assignees
Clear assignees
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".
No due date set.
Dependencies
No dependencies set.
Reference
morluto/rea#5293
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
📋 Pull Request Information
Original PR: https://github.com/morluto/rea/pull/2630
Author: @YunzhouLi-hub
Created: 10/13/2026
Status: 🔄 Open
Base:
main← Head:feat/import-path-exclusions📝 Commits (7)
b4befcbfeat(cli): expose caller-selected reference-source path exclusionsd0e87badocs(cli): use an effective reference exclusion negation18e007cMerge commit 'ebaaa79ca0' into HEAD20b2bc8Merge branch 'main' into feat/import-path-exclusionsdd184f0Merge branch 'main' into feat/import-path-exclusions42c8cb1test(cli): expect entry_kind on reference-source exclusions7bee2d8test(cli): record caller *.tmp over project ignore📊 Changes
3 files changed (+364 additions, -1 deletions)
View changed files
📝
docs/cli.md(+1 -0)📝
src/cli/utilityCommands.ts(+77 -1)📝
tests/boundary/cli/referenceSourceExclusions.test.ts(+286 -0)📄 Description
Let
import-reference-sourceaccept a JSON array of Git-ignore rules and forward them to the existing importer before the source tree is opened.Fixes #2443
Summary
The reference-source importer already accepted
excludePaths, recordedcaller-excludedprovenance, and pruned traversal — but the CLI adapter never exposed it. A caller who needed to skip avendor/directory had to import it anyway, or hand-edit the saved graph.import-reference-sourcenow takes--exclude-pathsand passes the parsed rules to the importer it already used.Two commits, both on this branch.
b4befcb10is the feature;d0e87ba7bwas pushed by the maintainer to correct the documentation example and its negation explanation, addressing the two review threads below. The second commit is the maintainer's, not the PR author's.Problem and expected behavior
Reported in #2443.
Smallest trigger:
rea import-reference-source /path/to/source --exclude-paths '["vendor/"]'— the option does not exist, so there is no way to reach the importer's caller-selected exclusion policy from the CLI.Violated invariant: the importer owns a caller-selected exclusion stage that emits
caller-excludedprovenance, but the CLI adapter could not reach it. The capability was unreachable rather than merely undocumented, and the only way to exercise it was to hand-edit the saved graph.Expected behavior, from #2443's acceptance list:
.gitignoreand declared-secret policies retained, with secret patterns still applied first;caller-excludedwith the winning pattern;Change and scope
src/cli/utilityCommands.ts(+82/−2) — all of it in the CLI adapter layer:referenceSourceExcludePathsSchema:z.array(z.string().min(1)), the narrowest shape that satisfies "JSON array of nonempty rules".parseReferenceSourceExcludePaths: decodes with the existingsafeParseJson, then validates, then returns{ ok: true, rules }or a projected failure. It runs beforeparseConfig(environment)and beforerunReferenceSourceImport, so a bad rule set never reaches the filesystem.invalidReferenceSourceExcludePaths: routes the failure through the existingAnalysisInputError→projectAnalysisError→projectInputIssueschain rather than inventing a new error shape, so the JSON keeps the sameerror/code/category/details.issuesenvelope as every other input refusal in this command....(excludePaths === undefined ? {} : { excludePaths }), so omitting the option produces a byte-identical request to before. An empty array is forwarded as an empty array and is asserted equivalent to omission.docs/cli.md(+18) — documents the option, the Git-ignore grammar (wildcards,vendor/suffixes,!negations, and that these are not literal path matches), the validation ordering,caller-excludedprovenance, and the precedence rules.tests/boundary/cli/referenceSourceExclusions.test.ts(+280) — one executable behavioral test plus eight input-validation cases (breakdown under Evidence).Why this fits the architecture: the CLI adapter owns argument parsing and error projection; the importer keeps owning exclusion semantics and provenance. Nothing in
src/domain/orsrc/application/reinterprets the rules, so the dependency direction is unchanged. The only new abstraction is the width-of-one-function schema/parse pair, which exists to make the "validate before the tree opens" ordering testable.Intentionally not included:
excludePathsalready existed; this only reaches it;import-reference-sourceis a CLI-only command and does not appear insrc/contracts/;.gitignorehandling;Follow the contribution scope.
Unresolved scope, authority, side effects, or required verification block
integration. Link the required maintainer scope decision for new providers or
capabilities involving target execution, injection, mutation, or protection
recovery; ordinary fixes within existing boundaries may state "not applicable".
Draft PRs may leave the scope decision pending and the final review checklist
unchecked. Maintainers can help resolve open questions.
Contract and boundary impact
caller-excludedprovenance, and is unchanged. The earliest changed stage is the CLI argument adapter insrc/cli/utilityCommands.ts.import-reference-sourcegains one optional string option,--exclude-paths. Additive: omitting it yields the previous request shape, and an empty array is asserted equivalent to omission. No MCP tool is affected —import-reference-sourceis absent fromsrc/contracts/, and the generateddocs/public/product-catalog.jsoncommand list is unchanged (exclude-pathsappears 0 times in it).skipIf(win32).caller-excludedwith the winning pattern. Declared secret patterns are applied first, so a caller rule cannot reclassify a declared secret — asserted directly (see Evidence).docs/public/product-catalog.json), package, or installation impact: none. No authored instruction changed, soskills/and the catalog are untouched and CI validation passes unchanged.Expected effects (check known effects; use documentation-only on its own).
Unchecked items do not establish absence; leave uncertainties visible.
Evidence and regression coverage
Executed, not proposed. All runs on Node 24.15.0 / Windows x64.
Tests added or updated:
tests/boundary/cli/referenceSourceExclusions.test.tsgains two blocks.Behavioral —
describe.skipIf(process.platform === "win32")("compiled reference-source caller exclusions"), one test,prunes caller-excluded directories and applies Git-ignore rules. It imports the same tree three times (option omitted, empty array, and["skip-me/","*.tmp","!keep.log","private.txt"]) and asserts:exclusionsand identical entry paths, so the empty array is provably a no-op rather than a second code path;exclusionsis exactly five entries —logs/application.logdefault-ignored*.log,notes.tmpcaller-excluded*.tmp,private.txtconfigured-secretprivate.txt,project.tmpproject-ignoredproject.tmp,skip-mecaller-excludedskip-me/;private.txtmatching a caller rule is still classifiedconfigured-secret, which is the secret-precedence assertion;project.tmpstaysproject-ignoredandlogs/application.logstaysdefault-ignored, so caller rules neither replace project nor default policy;keep.logsurvives as an entry — the!keep.lognegation restores a file excluded by the default*.log, proving negation works when the parent is still traversed;skip-me,skip-me/nestedorskip-me/nested/hidden.ts, and no exclusion path starts withskip-me/, so the matched directory is pruned rather than its files listed individually.Input validation —
describe("compiled reference-source caller exclusion input"), eight cases that run on every platform: malformed JSON ("["→invalid_format/JSON), a non-array JSON value ("{}"→invalid_type/array), and six invalid elements — numeric,null, object, boolean, empty-string (out_of_range/minimum: 1) — plusstarts an import after an empty exclusion array. Each assertsexitCode1, theinvalid_inputenvelope, the projected issue path, and that the output contains neither"could not be resolved"nor the source root, which is how "failed before the tree was opened" is pinned down rather than assumed.Base reproduction or other evidence: #2443's report is the base evidence that the importer capability was unreachable from the CLI. On the affected base revision the option is simply absent, so the new behavioral test cannot pass at all — it is not a re-worded existing assertion.
User-visible CLI/MCP output (if applicable): real
node scripts/rea.mjsruns, captured verbatim.Invalid input, rejected before the source tree is opened:
Ordering proof — a valid or empty array clears validation and reaches the import, which then fails on this host for a different, pre-existing reason:
So
invalid_inputprecedesunsupported_host, which is observable confirmation that validation happens before the tree opens rather than merely being claimed in the docs.Remaining proof gaps: the import itself cannot run on Windows (safe no-follow opens unsupported), so the behavioral test's two
skipIf(win32)cases are skipped here and the end-to-end import was not exercised on this host. The eight input-validation cases and the ordering proof above were exercised on Windows. No Linux or macOS run was performed. No MCP workflow is affected, so none was exercised.For evidence-bearing changes:
Validation performed
Listed commands actually ran, in this order, on this branch at
d0e87ba7b:npm run test:focused -- tests/boundary/cli/referenceSourceExclusions.test.ts— 8 passed, 2 skipped (win32), 10 totalnpm run check:fast— 2/2 tasks successful (typecheck + lint)npm run verify:test-discovery— "Discovered all 1022 test files exactly once."npx oxfmt --check docs/cli.md src/cli/utilityCommands.ts tests/boundary/cli/referenceSourceExclusions.test.ts— "All matched files use the correct format."node scripts/check-doc-facts.mjs— exit 0npm run docs:check— fails only onartifacts:managed-evidencewithEPERM: operation not permitted, mkdtemp '…rea-managed-conformance-XXXXXX'; reproduced identically on a cleanupstream/mainwith none of this change applied, so it is environmental and unrelated. Note this failure aborts turbo early, which is whycheck-doc-facts.mjswas run separately above.node scripts/rea.mjs import-reference-sourceinvocations — outputs quoted under Evidence.Not run: the full Vitest suite,
npm run build:cached(the compiled CLI indist/was already current), any provider workflow, and any Linux or macOS host.Compatibility, safety, and release
skills/change. Docs and CLI surface only, so patch-level at most if released separately.private.txt→configured-secretcase — so the option cannot be used to launder a secret path into ordinary content or the reverse.docs/cli.mdstates explicitly that selecting a path for exclusion is not a secrecy heuristic. No network, no process, no memory writes, nothing from the imported tree is executed. No new ambient environment is persisted.Author readiness
Human owner: @YunzhouLi-hub
Before merge
type(scope): outcome.Two review threads remain open on the branch and are addressed by
d0e87ba7b:!vendor/keep.tsexample had no effect, because a negation cannot re-include a file whose parent directory was excluded. Replaced with!keep.generatedafter*.generated, whose parent stays traversable, and the skipped-parent limitation is now documented.Both were fixed at the producing boundary (the documented example) rather than by changing Git-ignore semantics. The final diff is three files, 378 insertions, 2 deletions, with no unrelated cleanup.
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.