mirror of
https://github.com/morluto/rea.git
synced 2026-11-05 06:45:22 +00:00
[GH-ISSUE #1142] Proposal: TraceBrief — evidence-gated Markdown reports from REA investigations #403
Open
opened 2026-10-15 18:24:47 +00:00 by bsakaguchi
·
3 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#403
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?
Originally created by @dany331x on GitHub (Oct 9, 2026).
Original GitHub issue: https://github.com/morluto/rea/issues/1142
I'd like to propose adding TraceBrief — an evidence-gated Markdown report generator for finished REA investigations. This is a scope question, not a finished patch: I'm asking which integration shape (if any) is worth carrying before I write a port.
What TraceBrief is
A standalone, zero-dependency Node CLI that turns a finished REA investigation into a Markdown report another developer can read, reproduce and check.
The design point is the split. An agent writes claims; a deterministic script verifies the citations and renders the document. A prompt alone cannot verify that an
ev_<64 hex>id exists, that a runtime claim is not resting on static evidence, or that every residual unknown in the bundle is carried into the report as an open question.TraceBrief analyses nothing and calls no REA tools. It consumes the JSON that
export_evidence_bundlealready produces.Why this is not a drop-in patch
TraceBrief as written does not satisfy REA's contribution gates, and presenting it as a ready PR would waste review time:
src/.mjsmodulesvitestnode --testoxlint/oxfmtknipcleanjscpdduplication gateverify:test-discovery,metadata:generatePorting is straightforward but real: ~2,165 lines of tests become vitest specs, and the modules need a home inside REA's layering. That is ongoing maintenance surface, so it needs agreement before anyone writes it.
Three integration shapes, cheapest first
Documentation pointer. A page in
docs/describing the investigation-to-report workflow, linking to TraceBrief as an external tool. Smallest diff, no maintenance burden, and adjacent in spirit to the existingreconstruction-obligation-ledgers.mdandreconstruction-readiness.mdguides.A managed skill in
skill-src/. REA already ships managed skills, and/tracebriefis essentially a workflow guide plus a validator invocation. Reuses REA's existing distribution; needs ametadata:generatebump.First-party tool. Port TraceBrief into
src/as a supported command with full toolchain conformance. Largest benefit, largest ongoing cost, and it puts a second opinion about report structure inside the same repository.What has actually been verified
Against real REA 6.0.0 output on Windows / Node 24.21.0:
node_modules.npm run test:mutationsreverts each fix in turn and asserts a named test fails. The harness runs a baseline control first and exits 2 if that control does not pass — an earlier version of the harness reported a false 20/20 by running a path Node could not resolve, so every run failed and "all caught" was vacuously true.record_unknown/update_unknownbookkeeping, and a genuinely managedSystem.Data.dll(34 metadata tables, 9 assembly references, three mixedfile-offsetlocations)./tracebriefexercised through OpenCode itself.opencode run "/tracebrief"in an empty directory resolved the installed command and the agent followed it, including refusing to inventev_ids when the session had zero records.unk_id appears once asopenand later asresolvedin the same bundle. Any consumer treating "an unknown with this id exists" as "this unknown is unresolved" will mis-report.residualUnknownHeads()reduces the history to one head per id.What has not been verified
Being explicit, per CONTRIBUTING's "be clear about anything you couldn't test":
Question
Which of the three shapes, if any, is worth carrying? If the answer is "none — ship it standalone and link it from the docs", that is a fine outcome and costs this project nothing.
Happy to do the port if shape 2 or 3 is the answer. If it is shape 1, I will keep it out of tree and only submit the docs change.
@dany331x commented on GitHub (Oct 9, 2026):
Following up on my own issue with something concrete, in case it is useful for judging scope.
I measured the port rather than guessing at it. Typechecking the original sources under this repo's exact compiler options (
exactOptionalPropertyTypes,noUncheckedIndexedAccess,verbatimModuleSyntax) withallowJs/checkJsreports 300 errors — 67% implicit-any parameters, ~12%unknownnarrowing incatchclauses, and the rest needing genuine option types. So roughly two thirds is mechanical.Partial port: https://github.com/dany331x/tracebrief-rea-port
All five product modules are ported and
tsc --noEmitis clean under your exact options. What is not done: the CLI, 13 of 14 test files (9 of 179 tests ported), and all of the repo-specific integration work —verify:test-discoveryproject globs,verify:module-boundariesplacement,knipexport checking, and the 2.5%jscpdthreshold that does not exempt test files.PORTING.mdlists each of those with the specific obstacle. This should not be read as mergeable.The part I would point at is the verification approach. Typechecking a port proves nothing about behaviour, so
parity.mjsruns the original.mjsand the compiled TypeScript over the same inputs and compares byte for byte — issue lists, index sizes and full rendered Markdown, across the three real REA fixtures plus malformed and empty inputs. It caught three defects that no type error would have surfaced:readStringPathwalked the final key as if it were an intermediate object, soisRecord()was tested against a digest string. It returnedundefinedfor every call, silently disablingcheckTargetand the evidence-subject mismatch rule. Two integrity rules were dead and the port still compiled clean.derived 1, inferred 2.loadBundleFilehad been narrowed tostringwhile callers legitimately pass afile:URL fromimport.meta.url.I also proved the parity harness can fail. Changing
MIN_QUOTE_WORDSfrom 4 to 3 initially slipped through, because no fixture sits at that threshold — a gap I only found by injecting the mutation. Explicit 3-word and 4-word cases were added, and it now fails as it should.Two questions this raises rather than answers:
safeParse. TraceBrief's contract is "return every problem at once, never throw", which my hand-written guards express directly and zod expresses only awkwardly. Whether that difference is acceptable is a design call I did not want to make unilaterally.verify:module-boundariesandverify:test-discoverydictate where these files live than port the remaining files in a flat layout and relocate everything afterwards.If the answer is shape 1 (docs pointer) or "no", none of this is needed and I will leave it where it is.
@matbrgz commented on GitHub (Oct 12, 2026):
Integration Shape & Ecosystem Review
TraceBrief offers a valuable reporting concept for evidence-backed markdown synthesis:
AGENTS.md), core REA focuses on local evidence generation, session supervision, and typed contracts. Downstream synthesis and report generation are best kept either:@Lopesnextgen commented on GitHub (Oct 15, 2026):
This proposal leaves one step open: deciding what the findings mean for the target. I prototyped that step as a separate layer on the same input.
Draft PR: #3812 (
experiments/findings-triage/). Nothing is registered in the CLI, the MCP catalog or the package.It reads
export_evidence_bundleoutput plus an analyst-writtentriage.json. Each finding gets a verdict:defect,suspect,acceptableorunknown. Depending on the verdict, it also needs severity, impact, remediation and the next REA operation that would close the gap.The validator refuses verdicts the cited records cannot carry:
defectandacceptableneed at least oneobservedorderivedrecord that is notanalyst-inference.record_unknownrecords are derived, but they only record intent.defectoracceptableneeds that same record to carry runtime authority.suspectandunknownmay rest on static Evidence;next_probenames what would settle them.Evidence strength is computed from the cited records, never written by the analyst. The bundle goes through REA's own
parseEvidenceBundleinstead of a second parser.Output:
report.md.issues/, with anissues.jsonindex for filing withgh. Private findings go toadvisories/for private vulnerability reporting.raw_result,parametersorenvironment.The tool itself never contacts GitHub.
@dany331x This builds on your claim model rather than competing with it. I kept the vocabulary on purpose:
claim_type, issue objects and exit codes. If shape 2 or 3 is chosen, I'm glad to help finish the port and fold triage into it.Questions for maintainers: