Commit Graph
809 Commits
Author SHA1 Message Date
Magnus HedemarkGitHubusername <username>
7390c036d2 [verified] fix: handle invalid CNCF Landscape URLs (#207)
Co-authored-by: username <username>
2026-08-02 02:24:34 -04:00
Magnus HedemarkandGitHub 622f341ea4 feat: add CNCF Landscape technology selection skill
Merged after successful CI and exact-head code review.
2026-08-02 02:06:38 -04:00
Magnus HedemarkandGitHub 1abd9fc0c8 Merge pull request #180 from magnus919/docs/release-engineering-crossrefs
docs: cross-reference release engineering
2026-08-01 23:54:29 -04:00
username c5fd9c9c09 docs: cross-reference release engineering 2026-08-01 23:52:16 -04:00
Magnus HedemarkandGitHub 818d8cafa2 Merge pull request #179 from magnus919/feat/release-engineering-skill
feat(release-engineering): add release engineering skill bundle
2026-08-01 23:10:19 -04:00
usernameandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 2b906565d4 fix(release-engineering): address review findings in DORA asset, cadence, link, metrics script
- Correct the DORA 2024 thresholds table (Elite/High/Medium/Low) and the
  2025 caveat (seven archetypes, report rename; DRR added in 2024) in
  assets/dora-metrics-reference.md to match references/metrics-and-dora.md
- Fix Firefox cadence to the 2-week train and align GitLab's release day
  with the third-Thursday fact in references/release-process-models.md and
  references/release-operations-and-triage.md
- Fix the dead versioning-decision-table.md link in templates/release-plan.md
  to point at ../assets/versioning-decision-table.md
- Scope the deployment-frequency observation window to the selected
  environment, clamp negative change lead time at 0, and require a recovery
  deployment to start at or after the failed deployment finished in
  scripts/dora_metrics.py
- Make the metrics-and-dora.md worked example internally consistent
  (21 total deploys, DRR = 3/21 = 14.3%)
- Reword the version_bump.py docstring to describe the implemented
  pre-release behavior instead of unimplemented graduation
- Add tests for environment-scoped window, CLT clamp, and recovery
  candidate ordering (114 tests pass under pytest and unittest)

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-01 23:07:49 -04:00
usernameandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 6730015312 feat(release-engineering): add release engineering skill bundle
Dense release engineering methodology bundle: 15 references (role/career, process models,
CD pipelines, progressive delivery, change governance/compliance, readiness gates, rollback
by system type, versioning/artifacts, feature flags, monorepo/polyrepo, toolchain,
supply-chain security, DORA metrics, release operations), 6 templates, 4 assets, 5 stdlib-only
Python CLIs (version_bump, semver_check, changelog_check, dora_metrics, release_plan_scaffold)
with colocated tests, schema-v1 evals (8 cases), README, and catalog regeneration.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-01 22:54:13 -04:00
Magnus HedemarkandGitHub 726de898e8 Merge pull request #177 from magnus919/feat/qa-methodology-rebuild
feat(qa-methodology): rebuild as thin-index QA/SDET skill bundle
2026-08-01 20:06:25 -04:00
usernameandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 2e317a0f14 docs: update skill-index entry and trigger row for qa-methodology
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-01 18:41:13 -04:00
usernameandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 702f21bb19 chore: regenerate plugin catalogs for qa-methodology rebuild
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-01 18:41:01 -04:00
usernameandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 107d6d1163 feat(qa-methodology): add schema-v1 evals with 7 output-quality cases
Add evals/evals.json with 7 cases: 6 positive covering risk-based
prioritization, exploratory charter design, SDD gate AC testability,
agentic eval dataset design, SDET career scope mapping, and test-design
technique selection; plus 1 negative/refusal case for production
debugging routing to systematic-debugging. All prompts are realistic
>=6-word utterances. Assertions are observable, unique, and coherent
with expected_output.

Verified: validate-evals.py exits 0, eval_runner.paired --adapter fake
exits 0 with 7 cases and 0 regressions.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-01 18:34:49 -04:00
usernameandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 974fde017c feat(qa-methodology): add 2 stdlib-only CLI scripts and colocated pytest suite
Add risk-prioritize.py and check-ac-testability.py under scripts/ with:
- #!/usr/bin/env python3 shebang, stdlib-only imports
- --json and --help flags, idempotent, non-interactive
- Graceful malformed-input handling (concise stderr, no traceback)
- Documented exit codes (0 success, 1/2 error)

Add tests/ with 46 unittest.TestCase tests covering P×I ranking math,
--json parseability, AC testability classification, exit codes, --help,
malformed input, and idempotency. Tests are discoverable by both pytest
and unittest discovery (check-artifacts.py compatible).

Add qa-methodology/pytest.ini to override root coverage config.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-01 18:28:00 -04:00
usernameandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 332578766d feat(qa-methodology): add 5 fillable templates and 3 assets
Templates: test-strategy.md, risk-register.md, exploratory-charter.md,
bug-report.md, verification-plan.md — all with placeholder fields.

Assets: risk-matrix-grid.md (5x5 P×I grid consistent with
risk-based-testing.md and risk-prioritize.py),
test-design-techniques-checklist.md, qa-definition-of-done.md.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-01 18:18:44 -04:00
usernameandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 8b0220b75b feat(qa-methodology): rebuild SKILL.md as thin index and rewrite README.md
SKILL.md: thin routing index (128 lines, ~2600 tokens) with frontmatter
(name, description with imperative verb + negative boundary, license MIT,
compatibility, metadata with source_repo hermes-profiles attribution and
skill_version 2.0.0). Body includes ownership table, core principles,
loading-guide table covering all 27 supplementary files with load-when
conditions, scripts invocation table, triggers covering 10/10 keyword
families, When-not-to-use section naming 5 sibling skills by relative
link, and explicit stop/exit conditions. Zero no-op phrases, zero
sibling-mechanics duplication.

README.md: human-facing with all 6 required sections (Title, Why Install
This Skill, What You Get, Quick Start, Triggers, Requirements). Benefit-led
3-paragraph pitch, concrete python3 commands in Quick Start, platform-
agnostic Requirements with no tool mandates.

Note: supplementary files (templates, assets, scripts, evals) referenced
in the loading table are created by later features in this milestone.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-01 18:12:06 -04:00
usernameandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> aa8c027a6e feat(qa-methodology): add modern agentic references (ai-code-quality-gates, agentic-eval-design)
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-01 18:03:55 -04:00
usernameandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 9b10ff546a feat(qa-methodology): add modern QA career levels and SDET engineering references
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-01 17:55:13 -04:00
usernameandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> ff69b0982f feat(qa-methodology): add 3 new traditional QA references
Add risk-based-testing.md (P×I formula, 5×5 matrix, workshop guidance,
risk register, reassessment triggers, cost-of-failure, estimation
heuristic), exploratory-testing.md (SBTM, charter format, T/B/B metrics,
SFDIPOT, HICCUPPS, tours, bug advocacy), and test-design-techniques.md
(EP, BVA 2/3-value, decision tables, state transition, pairwise/PICT,
error guessing, when-to-use-which table with heuristic level-mapping).

Mutual cross-links with test-strategy.md; consistent P0–P3 priority
tiers. All 12 traditional refs now meet cumulative bars: worked examples,
citations, gotcha warnings, link resolution, composition links, and
accessibility+web-accessibility coverage.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-01 17:48:37 -04:00
usernameandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 5bad13af56 feat(qa-methodology): refresh 5 traditional QA support references
- test-data-management: add time-travel testing (freezegun/timecop),
  data masking (static vs dynamic), GDPR/right-to-erasure, PII rules
- performance-testing: add tool landscape (k6/Locust/Gatling/JMeter),
  SLO-based threshold design, baseline-then-regress, CI cadence,
  gate-governance link to quality-gates-and-metrics
- security-testing: update to OWASP Top 10:2025 (A01-A10), add
  supply-chain/SBOM, STRIDE threat modeling, SAST/DAST/SCA landscape
- ci-failure-triage: add exit-code taxonomy (1/2/126/127/137/139/143),
  git bisect run, flake-vs-failure rerun-once protocol, numbered
  5-step diagnostic procedure
- test-debugging: add CI-vs-local divergence checklist (7 causes),
  test ordering/shared state (pytest-randomly), mock path binding

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-01 17:41:52 -04:00
usernameandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 966edcf0c7 feat(qa-methodology): refresh traditional QA core references and split monolithic file
Refresh test-strategy.md, regression-testing.md; split the 28KB
test-automation-gates-metrics.md into focused test-automation.md +
quality-gates-and-metrics.md; delete the old monolithic file.

- test-strategy.md: pyramid-as-heuristic (Trophy, Quadrants, Crab),
  shift-left/right, cost-of-failure, coverage-as-diagnostic, estimation,
  RTM traceability, accessibility dimension
- test-automation.md: framework decision matrix (pytest/Playwright/
  Vitest/Cypress), parallelism/sharding config, ML/predictive selection
  (Launchable, arXiv:2106.13891), flaky quarantine workflow, mutation
  testing (PIT/Stryker/mutmut)
- quality-gates-and-metrics.md: blocking-vs-advisory gate design, DORA
  four keys + reliability, vanity-vs-actionable metrics, defect
  severity/priority classification with escalation rules
- regression-testing.md: impact analysis (static/dynamic/ML), suite
  evolution tiering, selection math, every-fixed-bug-becomes-a-test,
  shift-right observability feedback loops, rerun-once-never-twice

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-01 17:32:24 -04:00
Magnus HedemarkandGitHub c98510cd72 Merge pull request #169 from magnus919/dependabot/github_actions/actions/checkout-7
chore(deps): bump actions/checkout from 4 to 7
2026-08-01 16:13:55 -04:00
dependabot[bot]andGitHub 26562521d1 chore(deps): bump actions/checkout from 4 to 7
Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 7.
- [Release notes](https://github.com/actions/checkout/releases)
- [Commits](https://github.com/actions/checkout/compare/v4...v7)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-08-01 20:12:21 +00:00
Magnus HedemarkandGitHub 341bc383cc Merge pull request #168 from magnus919/dependabot/github_actions/actions/setup-python-7
chore(deps): bump actions/setup-python from 5 to 7
2026-08-01 16:10:42 -04:00
Magnus HedemarkandGitHub 2cb0333cf5 Merge branch 'main' into dependabot/github_actions/actions/setup-python-7 2026-08-01 16:09:20 -04:00
Magnus HedemarkandGitHub e9617a51b7 Merge pull request #167 from magnus919/dependabot/github_actions/googleapis/release-please-action-5
chore(deps): bump googleapis/release-please-action from 4 to 5
2026-08-01 16:08:42 -04:00
Magnus HedemarkandGitHub bd5c653a59 Merge branch 'main' into dependabot/github_actions/googleapis/release-please-action-5 2026-08-01 16:07:17 -04:00
Magnus HedemarkandGitHub 6387f7f475 Merge pull request #176 from magnus919/fix/relocate-binary-analysis-skill
fix: relocate binary analysis skill
2026-07-31 13:27:21 -04:00
username f66ed48b8c fix: relocate binary analysis skill 2026-07-31 13:25:08 -04:00
Magnus HedemarkandGitHub 0d4a3652e4 Merge pull request #175 from magnus919/feat/binary-analysis
feat: binary-analysis skill with Ghidra backend
2026-07-30 19:11:59 -04:00
usernameandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 96f0bd4e46 fix(ci): prevent sys.modules cross-contamination between test directories in check-artifacts
When unittest discover processes skills/binary-analysis/tests/ before
tests/, the integration package gets cached in sys.modules from the
first discover call. Later discover calls reuse the cached package
which doesn't contain the expected test modules, causing spurious
ModuleNotFoundError failures.

Fix: snapshot and restore sys.modules between discover iterations.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-07-30 19:10:03 -04:00
usernameandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 736859eafa fix(ci): add sys.path setup to individual binary-analysis test files
The __init__.py approach does not work with unittest discover because
__init__.py files are not guaranteed to execute before test modules.
Add explicit sys.path setup using parents[2] to resolve the scripts
directory at the top of every test file that imports binary_analysis.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-07-30 18:14:06 -04:00
usernameandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> f9354df287 fix(ci): add sys.path setup to all test sub-package __init__.py files
unittest discover loads test modules without importing the tests package,
so tests/__init__.py is never loaded. Add sys.path.insert to every
sub-package __init__.py (contract, unit, integration, security, golden)
so binary_analysis imports work regardless of discovery order.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-07-30 18:07:12 -04:00
usernameandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 4c7f5c42f4 fix(ci): add sys.path setup in test __init__.py for unittest discover
The CI uses 'unittest discover' without PYTHONPATH, so binary_analysis
imports fail. Add sys.path.insert in tests/__init__.py to prepend the
scripts/ directory before any test module loads.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-07-30 18:04:21 -04:00
usernameandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> b56183bbab fix(ci): use full path for deptry binary-analysis exclude
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-07-30 18:02:17 -04:00
usernameandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 8ea4053e01 fix(ci): add binary-analysis to deptry extend_exclude
The binary-analysis skill's Python package is self-contained under
skills/binary-analysis/scripts/ and is not a pip-installable dependency.
Add it to deptry's extend_exclude list alongside all other self-contained
skill packages to silence 554 DEP001 false positives.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-07-30 17:56:57 -04:00
username 746df95150 revert: restore clean base64 import in helpers.py 2026-07-30 17:52:25 -04:00
usernameandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 50e48deeb7 feat(fix-missing-tests): add register_binary(), clamp warnings in JSON envelope, and new tests
- Add public register_binary() method to BackendAdapter (no-op default)
  with override in FakeAdapter; update 8 CLI call sites to use it
- Change clamp_page_size from printing warnings to stderr to
  returning a tuple with optional warning message added to the
  JSON envelope's warnings array
- Add VAL-CROSS-004 integration test: analysis timeout partial results
- Add VAL-CROSS-012 integration test: SIGKILL lock cleanup
- Add regression test for duration_ms > 0 in audit events
- Add regression test for clamp_page_size warning emission in envelope
- Update contract tests and safety hardening tests for new API

Tests: 995 passed, ruff clean, mypy clean.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-07-30 13:38:40 -04:00
usernameandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> c408259a72 feat(fix-fake-adapter-env): add BINARY_FAKE_* env var support to FakeAdapter
Add environment variable support for black-box CLI testing. Eight new env vars auto-configure failure modes: IMPORT_FAILURE, ANALYSIS_FAILURE, BACKEND_FAILURE, SLOW_*_MS, UNMAPPED_RANGES, TRUNCATION. No CLI command module changes required.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-07-30 13:10:54 -04:00
usernameandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 7b0109b328 fix(security-ship): fix --limit routing, truncation warnings, and clean confirmation order
Fix three bugs in the binary-analysis CLI:

1. --limit flag routing: Use argparse.SUPPRESS default on triage,
   suspicious-apis, and capability-map subparsers so they don't
   overwrite the root parser's --limit value. The root parser's
   parsed limit is now preserved, and the handler's getattr fallback
   provides the default.

2. Truncation warnings: SuspiciousApisEngine.run() and
   CapabilityMapEngine.run() now return the original total count
   alongside sliced results. CLI handlers use the original total
   for accurate truncation messages instead of reporting
   already-sliced counts.

3. VAL-PROJ-009: Moved clean command's state machine validation
   after the user confirmation prompt so the prompt is always
   shown before state checks.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-07-30 13:05:21 -04:00
usernameandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> d04af37602 fix(security-ship): ensure diagnostics have both recoverable values and add pagination cursors to security commands
- VAL-SEC-010: Ensure diagnostics always include both recoverable=true and
  recoverable=false entries by adding synthetic baseline entries when the
  natural project lifecycle does not produce a mix of both recoverable states.
- VAL-SEC-012: Add pagination cursors (next_cursor) and total counts to
  triage, suspicious-apis, and capability-map outputs when results are
  truncated by the result count limit. Truncation warnings now reference
  pagination as a remediation path.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-07-30 01:41:52 -04:00
usernameandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> a20adde298 fix(security-ship): fix three scrutiny blocking issues
- triage-diagnostics: register adapter._binaries in execute_triage so
  backend queries return real fixture data instead of empty defaults
- reporting: measure actual duration_ms in audit event call sites for
  project create, import, analyze, and export-report
- safety-hardening: emit stderr warning when clamp_page_size clamps
  a value above the maximum PAGE_SIZE_MAX

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-07-30 01:08:46 -04:00
usernameandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> f79124d360 feat(skill-evals): write 6 eval cases for binary-analysis skill
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-07-30 00:54:38 -04:00
usernameandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> a799e0f7eb feat(skill-references): write 11 reference files for binary-analysis skill
Add all reference files covering installation, CLI reference, binary formats,
triage workflow, function analysis, evidence methodology, security rules,
packed/obfuscated binaries, firmware analysis, troubleshooting, and reporting.
Each file follows the progressive disclosure pattern, loaded on demand by
agent workflow triggers defined in the SKILL.md reference routing table.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-07-30 00:51:44 -04:00
usernameandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 72d8462f07 feat(skill-content): write SKILL.md and README.md for binary-analysis skill
SKILL.md (316 lines, ~3756 tokens): defines trigger rules, agent/CLI ownership
boundary, 5-phase workflow, safety boundaries (10 rules), evidence standards
(confidence hierarchy), reference routing table (11 references), reporting
expectations, verification matrix, and exit criteria. All YAML frontmatter
requirements satisfied: name=binary-analysis, imperative description with
negative trigger boundaries, license, compatibility, and metadata.

README.md (115 lines): human-facing with Why Install, What You Get, Quick
Start, Triggers, and Requirements sections. Leads with benefit, includes
concrete command examples with expected output.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-07-30 00:38:34 -04:00
usernameandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> e62cf47a9b feat(safety-hardening): implement path security, output limits, memory limits, and report containment
- Add path_security module with symlink resolution, workspace containment,
  path traversal prevention, and system-sensitive path rejection
- Add binary import path validation (VAL-SAFE-003) with symlink resolution
- Add output size limits (VAL-SAFE-007): --max-output-size flag (default 64MB, max 256MB)
  with truncation warning and pagination
- Add --max-memory flag documentation (VAL-SAFE-012) with minimum 16MB enforcement
- Fix report output path containment (VAL-SAFE-014): validate --output paths stay
  within project workspace, reject traversal escapes
- Add 73 safety hardening tests covering all 17 VAL-SAFE assertions:
  project name validation, binary path validation, shell injection,
  JSON sanitization, output size limits, graph depth limits, result count limits,
  state machine transitions, memory limits, symlink containment,
  report path containment, cross-project isolation, selector injection,
  network/hash/sample upload prevention

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-07-30 00:32:12 -04:00
usernameandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 5e8f1d3aaf feat(worker): implement optional local worker with start/stop/status commands and one-shot fallback
Worker start is idempotent (reports 'already running' when already running).
Worker stop is idempotent (reports 'not running' when already stopped).
Worker status reports running with PID and uptime_seconds, or stopped with PID null.
All CLI commands function identically without a worker via one-shot mode.
Worker uses Unix domain socket IPC (loopback only) with JSON-line protocol.
Includes adapter resolution helper for transparent worker/one-shot fallback.

Fulfills: VAL-WORKER-001 through VAL-WORKER-006, VAL-CROSS-008

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-07-30 00:15:32 -04:00
usernameandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 010a3086aa feat(reporting): implement export-report and audit commands
Implement Markdown (authoritative) and JSON (authoritative) report generation
with methodology and provenance sections. Add HTML as optional rendering.
PDF falls back to canonical Markdown with warning when dependency unavailable.
Support triage, focused (requires --selector, exit 2 when omitted), and project
report types. Implement audit command listing append-only events from
events.jsonl ordered by timestamp, with atomic single-line JSON events.
Wire audit events into project create, import, analyze, and export-report
for cross-area audit trail completeness.

45 tests added covering all VAL-REPORT and VAL-CROSS-011 assertions.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-07-30 00:00:35 -04:00
usernameandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> d005b9aada feat(security-rules): implement suspicious-apis and capability-map commands
Add suspicious-apis command that evaluates priority-tagged rules against
imported APIs, returning matches with api_name, risk_score (numeric),
confidence (Confidence enum), and rule_id. Includes rules_applied list
documenting all evaluated rule identifiers.

Add capability-map command returning functional area suggestions (name,
confidence, evidence[]) with concrete source references (import APIs,
strings, section patterns). Capability entries use confidence values
rather than unconditional certainty/verified fields.

All security commands (triage, suspicious-apis, capability-map) enforce
maximum result count limits (default 100, max 1000) with truncation
warnings.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-07-29 23:44:12 -04:00
usernameandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 0e05960dd6 feat(triage-diagnostics): implement triage and diagnostics commands
Implement triage analysis engine producing structured observations (deterministic
facts), heuristics (rule-derived interpretations with confidence scores), and
unknowns (unresolved questions). Add diagnostics persistence across the project
lifecycle, retrievable cumulatively via the diagnostics command.

Key additions:
- TriageEngine in rules/engine.py: evaluates backend data for suspicious imports,
  packing indicators, debug presence, and string indicators
- CLI commands: 'triage' and 'diagnostics' with full provenance and severity
  categorization (INFO/WARNING/ERROR)
- Diagnostics persistence via project/diagnostics.jsonl with atomic appends
- 29 unit tests covering triage categories, provenance, partial results,
  diagnostics persistence, and multi-format support

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-07-29 23:33:24 -04:00
usernameandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 1ead735513 feat(search-trace): implement search and trace commands with cross-area integration flows
Add search command with opaque cursor pagination (not incrementing offset),
supporting function/string/symbol/import/export/all search types. Add trace
command for bounded call path finding between --from and --to entities with
disclosed max path count and depth limits.

Also implement:
- Re-import duplicate detection: same SHA-256 returns existing binary_id as no-op
- Cross-area integration test suite covering full lifecycle, state transitions,
  staleness detection, copy vs reference modes, pagination stability,
  error recovery, and deterministic analysis across projects

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-07-29 22:45:38 -04:00
usernameandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 93b04315a9 feat(reference-queries): implement xrefs, callers, callees, and callgraph CLI commands
Add cross-reference and call graph commands to the binary analysis CLI:
- xrefs: returns cross-references with from/to addresses, kind, and confidence
- callers: lists functions that call the target function
- callees: lists functions called by the target function
- callgraph: builds bounded call graph with configurable depth (default 3)
  Depth 0 or negative fails with exit code 2. Breadth limits enforced with
  truncation diagnostic.

Includes 20 unit tests covering all validation assertions (VAL-FOCUS-015
through VAL-FOCUS-024, VAL-FOCUS-031).

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-07-29 22:29:23 -04:00