Skip to content

chore(quality): decode base64 sources, fix latent bugs, set up CI gates - #1

Open
canstralian wants to merge 21 commits into
mainfrom
claude/code-quality-baseline-tRTIL
Open

canstralian wants to merge 21 commits into
mainfrom
claude/code-quality-baseline-tRTIL

Conversation

@canstralian

@canstralian canstralian commented May 12, 2026 •

Copy link
Copy Markdown
Owner

Summary

Code-quality baseline pass. Several source files (*.py, *.sh, *.yaml, *.md) were committed as base64-encoded text, which meant ruff, shellcheck, and YAML parsers couldn't read them — CI's lint gates were effectively no-ops, and bugs hiding inside the encoded blobs went unnoticed.

This PR decodes those files in place, fixes the bugs that surfaced, and stands up real lint/test gates.

Decoded files (12)

  • import_vectors.sh
  • adapters/airtable/scope_mapper.py, adapters/airtable/README.md
  • adapters/mcp/server.py, adapters/mcp/README.md
  • contracts/redsage.yaml
  • control-plane/registry/vectors.yaml
  • docs/ARCHITECTURE.md, docs/CONTRACTS.md
  • vectors/{dashboard,pipeline,storage}/README.md

Bugs fixed (only visible after decoding)

  • import_vectors.sh
    • URL="${entry#:*}" → ${entry#*:} (URL was never extracted from the name:url entry)
    • [ "EXECUTE" -eq 1 ] → [ "$EXECUTE" -eq 1 ] (missing $ — branch never taken)
    • Dry-run echo had unbalanced quotes around $URL
  • adapters/airtable/scope_mapper.py
    • __main__ guard contained a stray U+001F byte ("__main\x1f_") — module wouldn't self-run
    • Removed unused os/json imports

Tooling baseline

  • pyproject.toml — pins ruff (E, F, I, B, UP) and pytest config; excludes vectors/dashboard (TS subtree).
  • requirements-dev.txt — pins ruff, pytest, pyyaml.
  • tests/ — real coverage for AirtableScopeAdapter plus contract-shape tests for vectors.yaml and redsage.yaml. The pytest gate is no longer a "no tests ran" no-op.
  • .gitignore — added at repo root (was missing).

Test plan

  • ruff check . — clean
  • pytest -q — 5 passed
  • bash -n import_vectors.sh — clean
  • YAML manifests parse via yaml.safe_load
  • CI workflows (ci.yml, lint.yml, tests.yml) green on this branch

https://claude.ai/code/session_01KH2J1ZAZuaSo3B3YEPiVw2


Generated by Claude Code

Summary by CodeRabbit

Release Notes

  • New Features

    • Vector import utility now available for managing vector modules
    • Airtable scope mapping adapter added for authorization control
    • MCP Server dynamically reads vector definitions from registry
  • Documentation

    • Architecture guide clarified with kernel layer and vector lifecycle details
    • Vector contracts framework documented with approval gates and requirements
    • Adapter documentation added for Dashboard, Pipeline, and Storage vectors
  • Tests

    • Airtable adapter validation tests added
    • Vector registry and contracts integrity checks added
  • Chores

    • Development dependencies and tooling configuration configured
    • Python project standards applied

Review Change Stack

Several tracked source files (.py, .sh, .yaml, .md) were committed as
base64-encoded text, so ruff/shellcheck/yaml parsers could not read them
and CI lint gates were effectively no-ops. Decoded them in place and
fixed the bugs that surfaced once the files were readable:

- import_vectors.sh: ${entry#*:} parameter expansion (was ${entry#:*}
  so URL was never extracted), $EXECUTE missing $ prefix, dry-run echo
  had unbalanced quotes around $URL.
- adapters/airtable/scope_mapper.py: __main__ guard contained a stray
  U+001F byte and an unused os/json import pair.

Tooling baseline:
- pyproject.toml pins ruff (E, F, I, B, UP) and pytest config; the
  dashboard subtree is excluded since it is a TS project.
- requirements-dev.txt pins the dev toolchain (ruff, pytest, pyyaml).
- tests/ adds real coverage for AirtableScopeAdapter and the
  vectors/redsage contract manifests so the pytest gate is meaningful
  instead of "no tests ran".
- .gitignore added at repo root (was missing).

Verified: ruff check . clean, pytest -q -> 5 passed, bash -n on the
shell script clean, both YAML manifests parse.
@coderabbitai

coderabbitai Bot commented May 12, 2026 •

Copy link
Copy Markdown

Warning

Rate limit exceeded

@canstralian has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 21 minutes and 41 seconds before requesting another review.

You’ve run out of usage credits. Purchase more in the billing tab.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 39403b2e-2e44-47e7-8375-4bcc22a4ae47

📥 Commits

Reviewing files that changed from the base of the PR and between f8b471e and 5e6151b.

📒 Files selected for processing (34)
  • .gitignore
  • adapters/airtable/scope_mapper.py
  • contracts/cognition.yaml
  • contracts/recon.yaml
  • contracts/sensory.yaml
  • control-plane/registry/vectors.yaml
  • import_vectors.sh
  • tests/test_repo_structure.py
  • tests/test_substrate_guardrails.py
  • vectors/dashboard/client/index.html
  • vectors/dashboard/client/src/App.tsx
  • vectors/dashboard/client/src/components/app-shell.tsx
  • vectors/dashboard/client/src/components/ui/button.tsx
  • vectors/dashboard/client/src/components/ui/card.tsx
  • vectors/dashboard/client/src/components/ui/empty-state.tsx
  • vectors/dashboard/client/src/components/ui/form-field.tsx
  • vectors/dashboard/client/src/components/ui/input.tsx
  • vectors/dashboard/client/src/components/ui/label.tsx
  • vectors/dashboard/client/src/components/ui/sheet.tsx
  • vectors/dashboard/client/src/components/ui/toaster.tsx
  • vectors/dashboard/client/src/index.css
  • vectors/dashboard/client/src/lib/utils.ts
  • vectors/dashboard/client/src/main.tsx
  • vectors/dashboard/client/src/pages/not-found.tsx
  • vectors/dashboard/client/src/pages/placeholder.tsx
  • vectors/dashboard/package.json
  • vectors/dashboard/postcss.config.js
  • vectors/dashboard/tsconfig.json
  • vectors/dashboard/vite.config.ts
  • vectors/substrate/__init__.py
  • vectors/substrate/guardrails/__init__.py
  • vectors/substrate/guardrails/input_scanner.py
  • vectors/substrate/guardrails/output_validator.py
  • vectors/substrate/processor.py
📝 Walkthrough

Walkthrough

This PR decodes archived project files and establishes the BugBountyOS foundation: project tooling configuration, system design and contract documentation, central vector registry with the red-sage contract, Airtable scope adapter implementation, YAML-backed MCP server integration, contract validation tests, and cleaned-up vector submodule imports and documentation.

Changes

Complete System Initialization

Layer / File(s) Summary
Project tooling and dependencies
.gitignore, pyproject.toml, requirements-dev.txt
Establishes Python configuration targeting py312, tooling rules (ruff, pytest), gitignore patterns for caches and virtual environments, and dev dependency constraints.
Architecture and contract documentation
docs/ARCHITECTURE.md, docs/CONTRACTS.md
Decodes system design describing kernel architecture, vector lifecycle states, promotion flow, and five-gate contract requirements (Contract Signed, Tests Pass, Spec Kit Score ≥27.5/35, Integration Pass, Owner Approval).
Vector registry and redsage contract
control-plane/registry/vectors.yaml, contracts/redsage.yaml
Defines central vector registry with dashboard, pipeline, storage, and red-sage entries; expands redsage contract with readable gates (version 1.0.0), checkpoint thresholds, and input/output interfaces targeting pipeline and execution_engine.
Vector import Bash utility
import_vectors.sh
Decodes Vector Import Utility v2.0 managing git subtree operations for dashboard, pipeline, storage with dry-run and execute modes; prints kernel load markers.
Airtable scope mapper adapter and tests
adapters/airtable/README.md, adapters/airtable/scope_mapper.py, tests/test_airtable_scope_mapper.py
Implements AirtableScopeAdapter with Fetch→Validate→Enforce scope mapping guardrail flow; stub methods return empty scope and deny authorization; three unit tests verify initialization, empty scope, and deny defaults.
MCP server with YAML registry integration
adapters/mcp/README.md, adapters/mcp/server.py
Wires MCP server to load vector registry from YAML at runtime; documents three exposed tools (check_scope, list_vectors, get_constitution); refactors list_vectors() to parse control-plane/registry/vectors.yaml with exception handling.
Contract and registry validation tests
tests/test_contracts.py
Adds YAML helper and two test cases: vectors_registry_shape validates expected vector IDs and contract_version fields; redsage_contract_has_required_gates asserts all five required gates are present.
Vector submodule documentation and import cleanup
vectors/dashboard/README.md, vectors/pipeline/README.md, vectors/pipeline/app.py, vectors/pipeline/models.py, vectors/pipeline/nlp_processor.py, vectors/pipeline/routes.py, vectors/storage/README.md, vectors/storage/app.py, vectors/storage/routes.py
Decodes and replaces obfuscated vector READMEs with descriptions of roles (Visual Cortex, Metabolism, Memory); removes unused imports (os, logging, datetime, Optional, Dict) from pipeline and storage modules; reorders imports for clarity.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

Poem

🐰 From Base64 fog the system emerges clear,
Vectors dance in YAML, gates align the year.
Airtable guards the scope, MCP sings in sync,
Tests validate the bonds—one coherent link. 🌱

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 41.67% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and accurately summarizes the main purpose of the PR: decoding base64-encoded sources, fixing bugs revealed after decoding, and establishing CI gates for code quality.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch claude/code-quality-baseline-tRTIL

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@ecc-tools

ecc-tools Bot commented May 12, 2026

Copy link
Copy Markdown

Analyzing 200 commits...

@ecc-tools

ecc-tools Bot commented May 12, 2026

Copy link
Copy Markdown

Analysis Complete

Generated ECC bundle from 1 commits | Confidence: 55%

View Pull Request #2

Repository Profile
Attribute Value
Language Python
Framework Flask
Commit Convention conventional
Test Directory separate
Changed Files (25)
Metric Value
Files changed 25
Additions 315
Deletions 135

Top hotspots

Path Status +/-
contracts/redsage.yaml modified +41 / -23
control-plane/registry/vectors.yaml modified +28 / -14
import_vectors.sh modified +26 / -16
adapters/airtable/scope_mapper.py modified +21 / -18
docs/ARCHITECTURE.md modified +38 / -1

Top directories

Directory Files Total changes
docs 2 71
. 4 67
adapters/airtable 2 64
contracts 1 64
adapters/mcp 2 59
Likely Future Issues (1)
Severity Signal Why it may show up
HIGH Security-sensitive changes may ship without scanner evidence 2 security-sensitive paths changed; 0 security scanner or security-focused validation artifacts changed
  • Security-sensitive changes may ship without scanner evidence: The PR touches billing, secrets, auth, webhooks, agent, or CI-sensitive surfaces without adding obvious security scanner, code scanning, or security-focused validation evidence.
Suggested Follow-up Work (1)
Type Suggested title Targets
PR security: add scanner evidence for adapters/mcp/README.md + adapters/mcp/server.py adapters/mcp/README.md, adapters/mcp/server.py
  • security: add scanner evidence for adapters/mcp/README.md + adapters/mcp/server.py: Backfill explicit scanner or code-scanning evidence before another security-sensitive change lands on the touched surface.

Copy-ready bodies

security: add scanner evidence for adapters/mcp/README.md + adapters/mcp/server.py

## Summary
- Add security scanner or code-scanning evidence for the recently changed security-sensitive surface.

## Why
- Backfill explicit scanner or code-scanning evidence before another security-sensitive change lands on the touched surface.

## Touched paths
- `adapters/mcp/README.md`
- `adapters/mcp/server.py`

## Validation
- Run or add the relevant security scanner, code scanning, secret scanning, or dependency/security review check for the touched surface.
- Attach the scanner output, SARIF/code-scanning result, or focused security regression test to the follow-up PR.
- Confirm the changed auth, billing, webhook, secret-handling, agent, or CI surface has an explicit pass/fail gate.
Generated Instincts (17)
Domain Count
git 4
code-style 9
testing 4

After merging, import with:

/instinct-import .claude/homunculus/instincts/inherited/BugBountyOS-instincts.yaml

Files

  • .claude/ecc-tools.json
  • .claude/skills/BugBountyOS/SKILL.md
  • .agents/skills/BugBountyOS/SKILL.md
  • .agents/skills/BugBountyOS/agents/openai.yaml
  • .claude/identity.json
  • .codex/config.toml
  • .codex/AGENTS.md
  • .codex/agents/explorer.toml
  • .codex/agents/reviewer.toml
  • .codex/agents/docs-researcher.toml
  • .claude/homunculus/instincts/inherited/BugBountyOS-instincts.yaml

ECC Tools | Everything Claude Code

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request establishes the foundational architecture for BugBountyOS, introducing a vector registry, contract definitions, and an Airtable-based scope adapter. It also includes an MCP server to expose tools like scope checking and vector listing to AI agents, alongside a suite of tests and a vector import utility. Feedback focuses on improving the robustness of the import script by making it idempotent, reducing maintenance overhead by dynamically loading the vector list from the registry manifest, and adopting standard Python package practices instead of manual path manipulation in the test configuration.

Comment thread import_vectors.sh Outdated
Comment thread adapters/mcp/server.py Outdated
Comment on lines +11 to +13
def list_vectors() -> list:
"""Return the current state of the Vector Registry."""
return ["dashboard", "pipeline", "storage", "red-sage"]

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The list of vectors is hardcoded here, which duplicates the registry defined in control-plane/registry/vectors.yaml. This creates a maintenance burden and a risk of the MCP server becoming out of sync with the actual registry. Consider loading this list dynamically from the YAML manifest to ensure consistency.

Comment thread tests/conftest.py Outdated
Comment on lines +5 to +6
for sub in ("adapters/airtable",):
sys.path.insert(0, str(ROOT / sub))

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

Manually manipulating sys.path to allow imports is generally discouraged as it can lead to brittle tests and module shadowing issues. A more robust approach would be to treat the adapters directory as a Python package by adding __init__.py files and using absolute or relative imports, or by installing the project in editable mode during development/CI.

- import_vectors.sh: skip subtree add when vectors/$NAME already exists,
  making the script idempotent (otherwise re-running fails once the
  vectors are imported).
- adapters/mcp/server.py: load the vector list from
  control-plane/registry/vectors.yaml at call time instead of
  hardcoding it, so the registry is the single source of truth.
- tests: drop sys.path manipulation in conftest; turn adapters/ into a
  real package (__init__.py) and import via
  `from adapters.airtable.scope_mapper import AirtableScopeAdapter`.
  Pytest's rootdir discovery (via pyproject.toml) puts the repo root
  on sys.path automatically.

Verified: ruff clean, pytest 5 passed, dry-run of import_vectors.sh
correctly skips all three existing modules.
@canstralian
canstralian marked this pull request as ready for review May 12, 2026 22:12
@coderabbitai

coderabbitai Bot commented May 12, 2026

Copy link
Copy Markdown

Note

Unit test generation is a public access feature. Expect some limitations and changes as we gather feedback and continue to improve it.


Generating unit tests... This may take up to 20 minutes.

@canstralian

Copy link
Copy Markdown
Owner Author

@openai-code-agent please review

@kilo-code-bot

kilo-code-bot Bot commented May 12, 2026 •

Copy link
Copy Markdown
\n## Code Review Summary\n\n**Status:** No Issues Found | **Recommendation:** Merge\n\n
\nFiles Reviewed (41 files)\n\n- \n- \n- \n- \n- \n- \n- \n- \n- \n- \n- \n- \n- \n- \n- \n- \n- \n- \n- \n- \n- \n- \n- \n- \n- \n- \n- \n- \n- \n- \n- \n- \n- \n- \n- \n- \n- \n- \n- \n- \n- \n- \n- \n\n
\n

Reviewed by nemotron-3-super-120b-a12b-20230311:free · 491,050 tokens

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@adapters/airtable/README.md`:
- Line 13: Update the README table header to match the code by fixing the typo
"Scope Vules" to "Scope Rules" so it aligns with the variable scope_rules_table
= "Scope Rules"; edit the table row that currently reads "| Scope Vules |
Authorization | ✄ Wired |" and replace "Scope Vules" with "Scope Rules".

In `@adapters/mcp/README.md`:
- Line 20: Remove the stray "J" character that appears after the closing code
fence in the README code block; locate the closing triple-backtick (```), delete
the trailing "J" so the fence is immediately followed by a newline, and ensure
the code block is properly closed without any extra characters.

In `@adapters/mcp/server.py`:
- Around line 19-23: The list_vectors() tool currently reads and parses
REGISTRY_PATH with yaml.safe_load without guarding against missing files, I/O
errors, or malformed/unexpected YAML structure; update list_vectors to catch
exceptions from file access (e.g., FileNotFoundError, OSError) and YAML parsing
(yaml.YAMLError), validate that the loaded data is a dict with a "vectors" list
before iterating, and return an empty list (or a sensible default) on error
while logging the exception; reference REGISTRY_PATH, yaml.safe_load, and the
list_vectors() function when adding the try/except, validation checks, and
process/logger calls.

In `@docs/ARCHITECTURE.md`:
- Line 34: The Mermaid edge between nodes E and F uses invalid syntax "E --.
F{Telemetry stable and role proven?}"; replace it with the correct dotted
arrow-with-head syntax "E -.-> F{Telemetry stable and role proven?}" so the
graph renders properly (locate the line containing the tokens E and F in the
ARCHITECTURE.md Mermaid diagram and update the edge string accordingly).
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 1b39c299-45f5-4954-85da-5ee8d7623dcf

📥 Commits

Reviewing files that changed from the base of the PR and between 0e2dfba and 63447ee.

📒 Files selected for processing (26)
  • .gitignore
  • adapters/__init__.py
  • adapters/airtable/README.md
  • adapters/airtable/__init__.py
  • adapters/airtable/scope_mapper.py
  • adapters/mcp/README.md
  • adapters/mcp/server.py
  • contracts/redsage.yaml
  • control-plane/registry/vectors.yaml
  • docs/ARCHITECTURE.md
  • docs/CONTRACTS.md
  • import_vectors.sh
  • pyproject.toml
  • requirements-dev.txt
  • tests/__init__.py
  • tests/test_airtable_scope_mapper.py
  • tests/test_contracts.py
  • vectors/dashboard/README.md
  • vectors/pipeline/README.md
  • vectors/pipeline/app.py
  • vectors/pipeline/models.py
  • vectors/pipeline/nlp_processor.py
  • vectors/pipeline/routes.py
  • vectors/storage/README.md
  • vectors/storage/app.py
  • vectors/storage/routes.py
💤 Files with no reviewable changes (1)
  • vectors/pipeline/nlp_processor.py

Comment thread adapters/airtable/README.md Outdated
Comment thread adapters/mcp/README.md Outdated
Comment thread adapters/mcp/server.py Outdated
Comment thread docs/ARCHITECTURE.md Outdated
@coderabbitai

coderabbitai Bot commented May 12, 2026

Copy link
Copy Markdown

✅ Created PR with unit tests: #5

@coderabbitai

coderabbitai Bot commented May 13, 2026

Copy link
Copy Markdown

Note

Unit test generation is a public access feature. Expect some limitations and changes as we gather feedback and continue to improve it.


Generating unit tests... This may take up to 20 minutes.

- adapters/airtable/README.md: fix typo "Scope Vules" -> "Scope Rules"
  (the row in the mapping table now matches scope_rules_table in
  scope_mapper.py).
- adapters/mcp/README.md: strip stray "J" character after the closing
  triple-backtick of the mcpServers JSON example.
- docs/ARCHITECTURE.md: fix invalid Mermaid edge "E --. F{...}" to use
  the documented dotted-arrow form "E -.-> F{...}" so the promotion-
  flow diagram renders.
- adapters/mcp/server.py: guard list_vectors() against missing /
  malformed vectors.yaml (OSError, yaml.YAMLError) and unexpected
  structure (KeyError, TypeError); returns an empty list on error so
  the MCP server tool stays alive instead of crashing the agent.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@adapters/airtable/README.md`:
- Around line 10-14: Add a single blank line between the "## Current Mapping"
heading and the following table (the block starting with "| Table | Role |
Status |" and rows like "Scope Rules | Authorization | ✄ Wired") so the table is
separated from the heading and satisfies markdown lint rule MD058.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 6144798e-f98b-4839-8ca3-27252ed2022b

📥 Commits

Reviewing files that changed from the base of the PR and between 63447ee and 4cbe51f.

📒 Files selected for processing (4)
  • adapters/airtable/README.md
  • adapters/mcp/README.md
  • adapters/mcp/server.py
  • docs/ARCHITECTURE.md
✅ Files skipped from review due to trivial changes (2)
  • docs/ARCHITECTURE.md
  • adapters/mcp/README.md
🚧 Files skipped from review as they are similar to previous changes (1)
  • adapters/mcp/server.py

Comment thread adapters/airtable/README.md
Satisfies markdown lint MD058 in the Current Mapping section of
adapters/airtable/README.md.
@coderabbitai

coderabbitai Bot commented May 13, 2026

Copy link
Copy Markdown

✅ Created PR with unit tests: #7

Wingman added 4 commits May 15, 2026 19:33
Conflict resolution:
- .gitignore: merged both sides
- adapters/airtable/scope_mapper.py: kept decoded modern syntax from PR
- control-plane/registry/vectors.yaml: decoded format + all 7 vectors from main
- contracts: new vectors from main preserved
- tests: repo structure tests from main preserved
New dashboard UI components, pages, and config from main branch.
Wingman Agent added 5 commits May 15, 2026 22:29
Resolved 7 merge conflicts and synced core files from main:
- .gitignore: kept PR's venv/env entries
- scope_mapper.py: kept typing import from main
- server.py: kept PR's dynamic YAML-based list_vectors
- vectors.yaml: preferred decoded YAML from PR over base64 from main
- import_vectors.sh: preserved 'already exists' guard
- Added pyproject.toml and requirements-dev.txt from main


_PII_PATTERNS: List[tuple[re.Pattern, str]] = [
(re.compile(r"\b\d{3}[-.}?\d{2}[-.]?\d{4}\b"), "ssn"),
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants