Conversation
- Add ISSUE_MODE, DEPRECATED_MUTATION_MODES, ARCH_GAP_LABELS, SUBSYSTEM_LABELS, ISSUE_PRIORITY_LEVELS, ISSUE_REPORT_DIR constants - Add ArchGap and IssueAction dataclasses - Add dry_run, max_issues, issue_subsystem fields to Config - Add issue_fingerprint(), render_issue_body(), find_existing_github_issue(), ensure_github_labels(), create_github_issue_api(), update_github_issue_api(), synthesize_issue(), diagnose_gaps(), run_issue_cycle() functions - Add deprecation warning to build_patch_plan() for mutate/campaign modes - Update write_step_summary() for issue mode output - Route run_cycle() issue mode to run_issue_cycle() - Update parse_args() with --dry-run, --max-issues, --issue-subsystem flags; default mode changed from 'report' to 'issue' - Update main() to route issue mode and emit deprecation warning for campaign - Update build_config() to populate new Config fields - Add 33 new tests covering fingerprint, body rendering, deduplication, labels, gap diagnosis, output schema, deprecated mode warning - Rewrite .github/workflows/repo-architect.yml for issue-first model; change permissions from contents:write/pull-requests:write to issues:write - Rewrite docs/repo_architect/OPERATOR_GUIDE.md describing new operating model Co-authored-by: Steake <530040+Steake@users.noreply.github.com>
- Add comment explaining 12-char fingerprint collision probability - Extract magic number 5 to _MAX_INLINE_FILE_DISPLAY constant - Fix test to use module-level 're' instead of local 'import re as _re' - Restore contents:write + pull-requests:write permissions in workflow (needed for deprecated mutate/campaign modes; comment added) Co-authored-by: Steake <530040+Steake@users.noreply.github.com>
|
This is a strong safety and governance improvement, but it needs to be reconciled explicitly with docs/architecture/GODELOS_ARCHITECTURAL_CHARTER.md and docs/architecture/GODELOS_REPO_IMPLEMENTATION_CHARTER.md. Those documents support diagnosis, reporting, and bounded governance, but they also preserve narrow, validated self-modification lanes rather than abolishing them outright. I’d merge this faster if the PR reframed issue-first orchestration as the new default/safe operating mode, retained the charter-defined lane model in code and docs, and added an explicit reconciliation section showing how the new flow aligns with the two charter documents. |
Reframe mutation modes as charter-validated secondary modes (per GODELOS_REPO_IMPLEMENTATION_CHARTER §9–§10) rather than deprecated features. Add explicit charter reconciliation section to OPERATOR_GUIDE showing alignment with both architectural charters. Changes: - Rename DEPRECATED_MUTATION_MODES → CHARTER_MUTATION_MODES - Replace "⚠️ DEPRECATED" warnings with "ℹ️ charter-validated" notices that reference specific charter sections - Update build_patch_plan docstring with charter alignment note - Update parse_args help text: mutation modes labelled as "charter-validated secondary modes (§9–§10)" not deprecated - Remove [DEPRECATED] labels from workflow inputs; add charter §refs - Add full Charter Reconciliation section to OPERATOR_GUIDE with two alignment tables mapping to both charter documents - Add "Lane-Based Mutation Modes" section documenting lanes 0–4, validation policy, and running instructions - Add "Detected Gap Types" charter lane equivalents column - Update test class from TestDeprecatedModeWarning → TestCharterValidatedModeNotice Co-authored-by: Steake <530040+Steake@users.noreply.github.com>
Reconciled in
All 126 tests pass. |
|
@copilot You are working inside the repository BraveNewCapital/GodelOS_StrangeDevLoop. Your task is to reconcile the current repository implementation with the authoritative architectural documents and update the repository accordingly. The authoritative architectural sources are: docs/architecture/GODELOS_ARCHITECTURAL_CHARTER.md These files define the intended operating model and MUST be treated as the canonical architectural specification for the repository. Do not infer architecture solely from existing code or workflows. Your job is to bring the repository into alignment with those charters while preserving the recent issue-first governance improvements introduced in PR #47. Goal Implement a charter-aligned operating model where:
This means the system should diagnose architectural gaps and create structured GitHub Issues by default, but the architecture must still acknowledge controlled mutation lanes as defined in the implementation charter. Steps you must perform
Inspect and extract the intended architecture from: docs/architecture/GODELOS_ARCHITECTURAL_CHARTER.md Identify the key architectural principles, including:
Do not proceed until you have extracted the intended model.
Inspect:
Determine where implementation diverges from the charters.
PR #47 introduced an issue-first governance model. Preserve the following behaviors:
But modify the implementation so that: Issue-first mode is the default orchestration mode, not a permanent replacement for mutation capability. Mutation lanes defined in the implementation charter must still exist conceptually in:
Even if direct automated mutation is disabled in default runs.
Refactor the repo architect system so that: Default run mode: inspect repo No default execution path should generate code diffs or branches. However the system must still: recognize mutation lanes defined in the charter such as:
These lanes should appear in issue synthesis and diagnostics.
Modify GitHub workflows so they: run repo inspection and issue synthesis Remove or disable automatic code mutation or branch generation from normal runs. If legacy mutation paths exist, gate them behind an explicit disabled or experimental mode.
Ensure the documentation under docs/ reflects the reconciled architecture. Specifically update: docs/repo_architect/OPERATOR_GUIDE.md (or equivalent) Add a section titled: Architectural Reconciliation This section must explicitly reference: docs/architecture/GODELOS_ARCHITECTURAL_CHARTER.md Explain that:
Ensure docs do not contradict the architectural charters.
Ensure the system continues detecting important architectural gaps such as: parse failures Ensure these map clearly to the mutation lanes defined in the implementation charter.
At the end of your implementation produce a short summary describing: Architecture documents consulted Constraints Do not invent new architecture that contradicts the charter documents. Prefer modifying existing services and workflows rather than creating parallel systems. Avoid large speculative rewrites when targeted changes achieve alignment. Success condition The repository must end in a state where:
|
…chitectural Reconciliation - Add CHARTER_LANE_MAP constant mapping all 10 charter lanes (§10) to (name, subsystem, description) tuples - Add "core", "knowledge", "agents", "consciousness" to SUBSYSTEM_LABELS for higher-lane gap detection - Add Lane 5 (contract repair) gap detection for dependency direction violations in diagnose_gaps() - Add Lane 7 (agent boundary enforcement) gap detection for cross-agent imports in diagnose_gaps() - Rename "Charter Reconciliation" → "Architectural Reconciliation" in OPERATOR_GUIDE with expanded content: - Core principles from charters - Full 10-lane reference table with automation status - Expanded alignment tables for both charter documents - Updated "Why issue-first is the default" rationale - Fix workflow comment: "Deprecated" → "Charter-validated" (line 234) - Update Detected Gap Types table with Lanes 5 and 7 - Update subsystem labels list in docs - Add 6 new tests: CHARTER_LANE_MAP completeness (3), higher-lane gap detection (3) All 132 tests pass. Co-authored-by: Steake <530040+Steake@users.noreply.github.com>
…t _MAX_VIOLATIONS_DISPLAY, improve assertions - Use pathlib.Path.parts for path segment matching instead of substring matching to reduce false positives in boundary detection - Use pathlib.Path.parent for cross-agent parent comparison - Extract _MAX_VIOLATIONS_DISPLAY = 5 constant for violation display limits - Use assertGreaterEqual instead of assertTrue(len >= 1) in tests All 132 tests pass. Co-authored-by: Steake <530040+Steake@users.noreply.github.com>
Implemented in Architecture documents consulted:
Implementation drift found and fixed:
Files modified:
Runtime behavior: default mode is Remaining items requiring human review: Lanes 6, 8, 9 gap detection signals are stubbed in |
🧪 CI — Python 3.10 |
🧪 CI — Python 3.11 |
There was a problem hiding this comment.
Pull request overview
This PR shifts repo_architect.py from an automated code-mutation workflow to an issue-first architectural governance tool, while preserving the charter-defined lane-based mutation model as an explicit opt-in secondary mode.
Changes:
- Adds an issue synthesis pipeline (gap diagnosis → fingerprinted dedupe → create/update GitHub Issues or dry-run artifacts).
- Introduces charter lane metadata (10-lane map + subsystem labels) and new higher-lane gap signals (Lanes 5 and 7).
- Updates workflow inputs/permissions and expands tests + operator documentation for the new issue-first default.
Reviewed changes
Copilot reviewed 10 out of 11 changed files in this pull request and generated 9 comments.
Show a summary per file
| File | Description |
|---|---|
repo_architect.py |
Adds issue-first mode, gap diagnosis, dedupe via fingerprints, GitHub Issue create/update, and charter lane metadata. |
tests/test_repo_architect.py |
Adds tests for issue-first behavior (fingerprint, body rendering, dedupe, labels, gap diagnosis, schema, lane map). |
docs/repo_architect/OPERATOR_GUIDE.md |
Rewrites operator guidance around issue-first governance, charter reconciliation, and updated CLI/workflow usage. |
.github/workflows/repo-architect.yml |
Switches default mode to issue, adds issue-mode inputs, and grants issues: write permission. |
docs/repo_architect/issues/1a3e5f0dc392.md |
Example dry-run issue artifact for parse-error gap. |
docs/repo_architect/issues/39189bfe6f6c.md |
Example dry-run issue artifact for import-cycle gap. |
.agent/roadmap.json |
Updated generated roadmap artifact reflecting current analysis. |
.agent/repo_architect_state.json |
Adds/updates issue-mode run history state artifact. |
.agent/code_graph.json |
Updated generated code graph artifact. |
.agent/artifacts_manifest.json |
New/updated artifact manifest including dry-run issue previews. |
repo_architect.py
Outdated
| agent_violations: List[str] = [] | ||
| for src, targets in import_graph.items(): | ||
| if not isinstance(targets, list): | ||
| continue | ||
| src_parts = pathlib.Path(str(src)).parts | ||
| if "agents" in src_parts: | ||
| for tgt in targets: | ||
| tgt_parts = pathlib.Path(str(tgt)).parts | ||
| # Agent reaching into another agent's internal module | ||
| if "agents" in tgt_parts and pathlib.Path(str(src)).parent != pathlib.Path(str(tgt)).parent: | ||
| agent_violations.append(f"{src} → {tgt}") |
| cycles = analysis.get("cycles", []) | ||
| if cycles: | ||
| cycle_files: List[str] = [] | ||
| for c in cycles[:5]: | ||
| cycle_files.extend(c) | ||
| cycle_files = list(dict.fromkeys(cycle_files))[:10] | ||
| add(ArchGap( | ||
| subsystem="runtime", | ||
| issue_key="import-cycles", | ||
| title=f"[arch-gap] Break {len(cycles)} circular import cycle(s)", | ||
| summary=f"The codebase has {len(cycles)} circular import cycle(s) that degrade startup performance and complicate testing.", | ||
| problem=( | ||
| f"Example cycle: {' → '.join(cycles[0]) if cycles else 'see analysis'}.\n" | ||
| "Circular imports force the interpreter to partially execute modules, causing subtle " | ||
| "AttributeError and ImportError bugs." | ||
| ), | ||
| why_it_matters="Circular imports increase coupling, slow startup, and block modular testing.", | ||
| scope=f"Break the top {min(len(cycles), 3)} import cycle(s) using TYPE_CHECKING guards or lazy imports.", | ||
| suggested_files=cycle_files, | ||
| implementation_notes=( |
repo_architect.py
Outdated
| try: | ||
| result = github_request(config.github_token, f"/search/issues?{query}") | ||
| items = result.get("items", []) if isinstance(result, dict) else [] | ||
| for item in items: | ||
| body = item.get("body") or "" | ||
| if marker in body: | ||
| return item | ||
| except RepoArchitectError: | ||
| pass | ||
| return None |
repo_architect.py
Outdated
| labels_applied=[], dedupe_result="existing_open", fingerprint=fp, | ||
| dry_run_path=None, gap_title=gap.title, gap_subsystem=gap.subsystem, | ||
| error=str(exc), | ||
| ) | ||
| return IssueAction( | ||
| action="updated", issue_number=issue_number, issue_url=issue_url, | ||
| labels_applied=[], dedupe_result="existing_open", fingerprint=fp, |
| | 3 | `entrypoint_consolidation` | Annotates one redundant backend server entrypoint with a `# DEPRECATED` comment when ≥ 4 backend entrypoints exist. Model-assisted. | | ||
| | 4 | `hygiene` | Remove explicitly `# DEBUG`-marked `print()` statements. No model required. | | ||
| | 5 | `report` | Refresh the architecture documentation packet. Only selected when no higher-priority code mutation is possible. | | ||
| | `--mode issue` | required | Enable issue-first mode | |
repo_architect.py
Outdated
| p.add_argument("--issue-subsystem", default=None, | ||
| help="Issue mode: restrict gap detection to a specific subsystem " | ||
| f"(choices: {', '.join(SUBSYSTEM_LABELS)}).") |
| "local_import_graph": { | ||
| "backend/interface/api.py": ["backend/core/engine.py"], | ||
| }, | ||
| } |
| permissions: | ||
| contents: write | ||
| pull-requests: write | ||
| contents: write # required for mutation modes (branch push); read-only for issue mode | ||
| issues: write # required for issue-first mode (open/update GitHub Issues) | ||
| pull-requests: write # required for mutation modes (PR creation) | ||
| models: read |
repo_architect.py
Outdated
| src_parts = pathlib.Path(str(src)).parts | ||
| for tgt in targets: | ||
| tgt_parts = pathlib.Path(str(tgt)).parts | ||
| # Detect cross-boundary imports per §6 Dependency Direction Contract | ||
| if ("interface" in src_parts and "core" in tgt_parts) or \ | ||
| ("knowledge" in src_parts and "runtime" in tgt_parts) or \ | ||
| ("agents" in src_parts and "interface" in tgt_parts): | ||
| boundary_violations.append(f"{src} → {tgt}") |
|
@copilot apply changes based on the comments in this thread |
…tion, dedupe, docs, and workflow permissions 1. Fix Lane 5/7 detection: add _module_segments() to normalize module names (dot-separated) into segments instead of using pathlib.Path on them. 2. Fix import cycle suggested_files: add _module_to_path() to map module names back to file paths using python_files analysis data. 3. Fix find_existing_github_issue: raise RepoArchitectError on API failures instead of silently swallowing — synthesize_issue now logs and returns error action on dedupe lookup failure. 4. Fix IssueAction.labels_applied: populate labels for existing-issue update and error paths. 5. Fix OPERATOR_GUIDE.md: --mode issue is the default, not required. 6. Fix --issue-subsystem: add argparse choices=SUBSYSTEM_LABELS validation. 7. Fix tests: use module-name format matching build_analysis() output. 8. Workflow: split into two jobs (repo-architect-issue with least privilege and repo-architect-mutate with elevated permissions) gated by mode. 9. Add 9 new tests covering _module_segments, _module_to_path, dedupe failure, and import cycle suggested_files mapping. All 141 tests pass. Co-authored-by: Steake <530040+Steake@users.noreply.github.com>
|
This is now in much better shape. The substantive blockers appear to be addressed:
Assuming the file-level diff matches the PR description, this looks close to mergeable. One thing I still want kept explicit in code/docs/tests is the distinction between:
That distinction matters and should remain the source of truth in summaries and artifacts. Otherwise this now looks aligned with the charter-preserved model: |
…of) distinction in code, docs, and tests Co-authored-by: Steake <530040+Steake@users.noreply.github.com>
Sharpened the
182 tests pass, CodeQL: 0 alerts. |
|
This is now in good shape. The merge-blocking items appear to be addressed:
Assuming the file-level diff matches the PR description, this looks close to mergeable. One thing worth keeping explicit in code/docs/tests is the distinction between:
That distinction should remain the source of truth in summaries, artifacts, and any future automation built on top of issue mode. Otherwise this now looks aligned with the charter-preserved model: |
There was a problem hiding this comment.
Pull request overview
This PR shifts repo_architect.py to an issue-first governance workflow (default mode), while reconciling charter-alignment details, tightening error normalization, clarifying label “requested vs confirmed” semantics, and cleaning generated artifacts from version control.
Changes:
- Added issue-first mode with deterministic issue fingerprinting, structured issue-body rendering, deduplication, and label proof (
labels_confirmed) inrepo_architect.py. - Introduced/updated charter companion artifacts (
policy.json,mutation_lanes.json,dependency_contract.json) and expanded operator documentation; removed generated report markdowns from tracking and gitignored run outputs. - Updated GitHub workflow inputs/permissions to support issue mode and separated mutation-mode execution; strengthened tests (fail-fast git commands) and added substantial coverage for issue-mode behavior.
Reviewed changes
Copilot reviewed 14 out of 16 changed files in this pull request and generated 6 comments.
Show a summary per file
| File | Description |
|---|---|
tests/test_repo_architect.py |
Adds extensive tests for issue-first mode (fingerprints, issue rendering, dedupe, labels_confirmed, lane 5/7 detection) and makes git test setup fail-fast. |
repo_architect.py |
Implements issue-first orchestration (new mode, ArchGap/IssueAction, dedupe, label proof), adds charter constants/companion discovery, improves error normalization, updates summaries, and routes new mode. |
docs/repo_architect/OPERATOR_GUIDE.md |
Rewrites documentation around the new operating model, output schema, label semantics, and charter companion files. |
docs/repo_architect/policy.json |
Adds machine-readable governance policy derived from the implementation charter. |
docs/repo_architect/mutation_lanes.json |
Adds machine-readable lane definitions and mutation budget/validation policy. |
docs/repo_architect/dependency_contract.json |
Adds a machine-readable dependency direction contract aligned with charter §6 and Lane 5 enforcement. |
.github/workflows/repo-architect.yml |
Adds issue-mode inputs, defaults workflow to issue mode, adjusts permissions, and splits issue vs mutate/campaign jobs. |
.gitignore |
Ignores repo-architect dry-run outputs, generated report markdowns, and .agent/ run artifacts. |
docs/repo_architect/top_risks.md |
Removes generated report from tracking (now gitignored). |
docs/repo_architect/runtime_inventory.md |
Removes generated report from tracking (now gitignored). |
docs/repo_architect/parse_errors.md |
Removes generated report from tracking (now gitignored). |
docs/repo_architect/entrypoint_clusters.md |
Removes generated report from tracking (now gitignored). |
docs/repo_architect/circular_dependencies.md |
Removes generated report from tracking (now gitignored). |
.agent/roadmap.json |
Removes generated artifact from tracking (now gitignored). |
.agent/code_graph.json |
Removes generated artifact from tracking (now gitignored). |
docs/repo_architect/policy.json
Outdated
| @@ -0,0 +1,74 @@ | |||
| { | |||
| "$schema": "docs/repo_architect/policy.json", | |||
| @@ -0,0 +1,150 @@ | |||
| { | |||
| "$schema": "docs/repo_architect/mutation_lanes.json", | |||
| Returns the matching issue dict, or ``None`` if no match is found. | ||
| Raises :class:`RepoArchitectError` for **any** failure during the lookup | ||
| (network, HTTP, JSON decode, unexpected response shape, etc.) so that | ||
| callers always receive a single normalised exception type and can decide | ||
| whether to skip issue creation on dedupe failure. |
| suggested_files=[ | ||
| str(config.analysis_path.relative_to(config.git_root)), | ||
| str(DEFAULT_REPORT_DIR / "top_risks.md"), | ||
| ], | ||
| implementation_notes=( |
repo_architect.py
Outdated
| campaign_lanes=campaign_lanes, | ||
| dry_run=args.dry_run, | ||
| max_issues=args.max_issues, | ||
| issue_subsystem=args.issue_subsystem or os.environ.get("REPO_ARCHITECT_SUBSYSTEM"), |
tests/test_repo_architect.py
Outdated
| @@ -38,8 +39,8 @@ def _make_git_root(tmp: str) -> pathlib.Path: | |||
| subprocess.run(["git", "-C", str(root), "config", "user.name", "Test"], capture_output=True) | |||
| # Create an initial commit so HEAD exists and branch operations work | |||
|
@copilot apply changes based on the comments in this thread |
Co-authored-by: Steake <530040+Steake@users.noreply.github.com>
Co-authored-by: Steake <530040+Steake@users.noreply.github.com>
Implemented all requested updates in This includes removing self-referential |
There was a problem hiding this comment.
Pull request overview
This PR pivots repo_architect.py toward an issue-first governance default mode (diagnose → dedupe → open/update GitHub Issues with structured bodies/prompts), while tightening API/error contracts, documenting charter alignment, and cleaning generated artifacts from version control.
Changes:
- Add issue-mode orchestration (fingerprinting, issue body rendering, dedupe, label proof) and route
--mode issueas the default execution path. - Harden operational contracts: normalize GitHub/network errors, validate
REPO_ARCHITECT_SUBSYSTEM, and expand/verify output schemas via tests. - Repository hygiene + documentation/workflow updates: ignore run-generated artifacts, add charter companion JSONs, and update the operator guide/workflow inputs.
Reviewed changes
Copilot reviewed 14 out of 16 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
repo_architect.py |
Introduces issue-first mode, adds dedupe+label-proof plumbing, extends charter constants/context, and adjusts CLI + summaries. |
tests/test_repo_architect.py |
Adds extensive unittest coverage for issue-mode behaviors, schema contracts, helper utilities, and charter alignment. |
.github/workflows/repo-architect.yml |
Updates workflow to default to issue and adds issue-mode inputs; splits mutation modes into a separate job. |
docs/repo_architect/OPERATOR_GUIDE.md |
Rewrites documentation around the new operating model, modes, outputs, and companion files. |
docs/repo_architect/policy.json |
Adds machine-readable policy (modes, invariants, priority order, agent instruction contract). |
docs/repo_architect/mutation_lanes.json |
Adds machine-readable lane definitions + validation/budget policy metadata. |
docs/repo_architect/dependency_contract.json |
Adds machine-readable dependency direction contract and Lane 5 enforcement notes. |
.gitignore |
Ignores .agent/, issue dry-run outputs, and per-run generated markdown reports. |
docs/repo_architect/*.md & .agent/*.json |
Removes run-generated artifacts from tracking (now gitignored). |
repo_architect.py
Outdated
| log("Deduplication lookup failed; skipping issue creation to avoid duplicates", | ||
| data={"fingerprint": fp, "error": str(exc)}) |
| repo-architect-issue: | ||
| if: ${{ github.event.inputs.mode == '' || github.event.inputs.mode == 'issue' || github.event.inputs.mode == 'analyze' || github.event.inputs.mode == 'report' || github.event_name == 'schedule' }} | ||
| runs-on: ubuntu-latest | ||
| permissions: | ||
| contents: read | ||
| issues: write | ||
| models: read |
.github/workflows/repo-architect.yml
Outdated
| inputs: | ||
| mode: | ||
| description: 'Execution mode' | ||
| description: 'Operating mode. ''issue'' (default safe governance mode). ''analyze''/''report'' are read-only. ''mutate''/''campaign'' are charter-validated secondary modes (§9–§10).' |
| "agents": "Agent orchestration, lifecycle, message routing", | ||
| "interface": "External API surface, protocol handling, presentation" | ||
| }, | ||
| "allowed_direction": "Dependencies flow from outer layers toward inner layers: interface depends-on agents depends-on knowledge depends-on core depends-on runtime. This is a conceptual directional flow per charter §6, not a licence for arbitrary imports. Reverse dependencies (inner layers importing outer layers) violate the contract. See hard_prohibitions for the specific §6.1 enforcement rules.", |
|
@copilot apply changes based on the comments in this thread |
Co-authored-by: Steake <530040+Steake@users.noreply.github.com>
Implemented the thread updates in Changes include: propagating Added regression coverage for the dedupe lookup failure log-mode behavior in No UI changes were made in this update. |
Description
Addresses all outstanding review items preventing merge across multiple review rounds:
1.
dependency_contract.jsoncharter §6 reconciliation$schema"dependencies flow outward from runtime"with unambiguous"depends-on"chain matching Lane 5 detection logiclayer_order_semanticsclarifying index 0 = foundation"adjacent inner layer only"claim with charter's actual directional flow language ("Dependencies flow inward: outer layers depend on inner layers")lane_5_enforcementsection documenting what Lane 5 actually checks (§6.1 hard prohibitions) vs what it allows, making the contract trustworthy for tooling/agents consuming it2. Hard exception normalization in
find_existing_github_issue()except Exceptionwraps any non-RepoArchitectError(TypeError, KeyError, JSONDecodeError, etc.) intoRepoArchitectError3. Labels requested vs confirmed distinction
labels_appliedonIssueActionnow documents as labels requested by the orchestration layer (deterministic label set sent to the API)labels_confirmed: Optional[List[str]]onIssueAction, populated from GitHub API response via_extract_confirmed_labels()helper — this is the API proof of what labels were actually setNonelabels_applied= "requested by orchestration",labels_confirmed= "returned by GitHub API after create/update"TestLabelsConfirmedtests verify the distinction across update, create, dry-run, and error paths4. Generated report artifacts removed from tracking
git rm --cachedthe 5 per-run.mdreports (runtime_inventory, circular_dependencies, parse_errors, entrypoint_clusters, top_risks).gitignore; §15 companion JSONs and OPERATOR_GUIDE.md remain trackeddocs/repo_architect/issues/gitignored and removed from tracking — these are per-run generated artifacts that should not live in-tree5. IssueAction API contract accuracy
"skipped"action value fromIssueAction.actiondoc (never produced bysynthesize_issue())"skipped"summary branch inrun_issue_cyclededupe_resulttable now includeslookup_failedandcreate_failed; addedlabels_confirmedanderrorfields; removed staleskippedexample output6. Test robustness
check=Trueto allgit add/git commitsubprocess.run()calls in tests to fail fast on errorscheck=Trueto git identityconfigsubprocess calls in test repo setup helpers to fail fast consistently7. Workflow
issue_subsysteminput validationstringtochoiceinput matchingSUBSYSTEM_LABELS(with empty''default for all), preventing typos from causing argument parsing failures8. Lane 7 agent boundary detection fix
_agent_name()helper that extracts the segment immediately after"agents"in module segments (e.g."planner"frombackend.agents.planner.core)backend.agents.foo→backend.agents.foo.utilsis no longer a false positive)9. Follow-up fixes from review thread
#3950064310$schemafields from:docs/repo_architect/policy.jsondocs/repo_architect/mutation_lanes.jsonfind_existing_github_issue()docstring with implemented behavior (no longer claims non-dict response shape raises)docs/repo_architect/top_risks.mdreferences in architecture-score gap outputs with the current analysis artifact path (analysis_path)REPO_ARCHITECT_SUBSYSTEMenv var inbuild_config()againstSUBSYSTEM_LABELS; invalid values now raiseRepoArchitectErrorREPO_ARCHITECT_SUBSYSTEMenv value rejectiontop_risks.mddependency10. Follow-up fixes from review thread
#3950079463json_mode=config.log_jsonreportruns in the mutation-capable job with write permissions, whileissue/analyze/scheduleremain in the issue/read-only pathanalyzeread-only;reportmutation-capable)dependency_contract.jsonwording soallowed_directionandlane_5_enforcement.not_flaggedare internally consistent and unambiguous for toolingRelated Issues
Test Evidence
184 tests pass (including latest follow-up coverage):
TestDependencyContractCharterAlignmentTestDedupeHardExceptionNormalizationTestLabelsConfirmedTestGeneratedReportArtifactsGitignoredTestAgentNameTestLane7SameAgentNotFlaggedTestModelConfigurationREPO_ARCHITECT_SUBSYSTEMenv valueTestDiagnoseGapsTestIssueSynthesisDeduplicationconfig.log_jsonAdditional verification:
TestIssueSynthesisDeduplicationTestDependencyContractCharterAlignmentChecklist
pytest tests/)black .andisort .)📍 Connect Copilot coding agent with Jira, Azure Boards or Linear to delegate work to Copilot in one click without leaving your project management tool.