Skip to content

feat(kanban): add phase 6 gitops enforcement

8620410
Select commit
Loading
Failed to load commit list.
Closed

feat(kanban): add phase 6 gitops enforcement #2562

feat(kanban): add phase 6 gitops enforcement
8620410
Select commit
Loading
Failed to load commit list.
MacroscopeApp / Macroscope - Correctness Check completed May 6, 2026 in 5m 27s

Issues found but failed to post (294 code objects reviewed).

β€’ Merge Base: 499f146
β€’ Head: 8620410

Details

βœ… File Path Comments Posted
βœ… review.md
βœ… .gitignore
βœ… .cursorrules
βœ… .ai/README.md
βœ… docs/project.md
βœ… scripts/test.ts 0
βœ… .cursor/BUGBOT.md
βœ… .github/ai-loop.yml
βœ… CLAUDE.md
βž– .codex/commands/plan.md
βž– .codex/commands/ship.md
βœ… scripts/ai-loop/hash.ts 0
βœ… .ai/rules/13-security.md
βœ… .claude/commands/ship.md
βž– .codex/commands/phase.md
βœ… scripts/ai-loop/state.ts 0
βœ… scripts/vitest.config.ts
βœ… .claude/commands/phase.md
βž– .codex/commands/review.md
βœ… scripts/ai-loop/config.ts 0
βœ… scripts/ai-loop/schema.ts
βœ… scripts/setup-local-db.sh
βœ… .claude/commands/review.md
βž– .codex/commands/open-pr.md
βœ… scripts/setup-domain.sh
βœ… .ai/i18n/agent-banners.json
βœ… .claude/commands/plan.md
βœ… docs/agent-orchestration.md
βž– package.json
βœ… scripts/preflight/result.ts 0
βœ… .ai/rules/00-constitution.md
βœ… .ai/rules/18-pr-readiness.md
βž– .codex/commands/env-audit.md
βž– .codex/commands/preflight.md
βœ… scripts/ai-loop/github.ts 0
βœ… scripts/ai-loop/router.ts 0
βœ… scripts/check-port-policy.sh
βœ… scripts/preflight/run-cli.ts 0
βœ… scripts/security-audit.sh
βœ… .claude/commands/env-audit.md
βœ… .claude/commands/preflight.md
βž– .codex/commands/ifrs-audit.md
βž– .codex/commands/pdpl-audit.md
βœ… .oxfmtrc.json
βœ… scripts/preflight/redactor.ts 0
βœ… scripts/preflight/registry.ts 0
βœ… .ai/rules/22-kanban-console.md
βœ… .claude/commands/ifrs-audit.md
βœ… .claude/commands/open-pr.md
βœ… .claude/commands/pdpl-audit.md
βž– .codex/commands/orchestrate.md
βž– .codex/commands/plan-status.md
βœ… apps/web/src/routes/kanban.tsx 0
βœ… scripts/ai-loop/pr-metadata.ts 0
βœ… scripts/preflight/fix/apply.ts 0
βœ… scripts/preflight/runner.ts 0
βœ… .ai/rules/15-pdpl-compliance.md
βœ… .ai/rules/19-ifrs-compliance.md
βœ… .ai/rules/20-environments.md
βœ… .claude/commands/orchestrate.md
βœ… .claude/commands/plan-status.md
βž– .codex/commands/execute-task.md
βž– .codex/commands/init-project.md
βž– .codex/commands/user-stories.md
βœ… .github/workflows/ai-review.yml
βœ… scripts/ai-loop/normalize.ts 0
βœ… scripts/ai-loop/router-logic.ts 0
βœ… .claude/commands/execute-task.md
βœ… .claude/commands/init-project.md
βœ… scripts/check-pr-readiness.sh
βœ… scripts/preflight/output/json.ts
βž– scripts/tests/ai-loop.spec.ts
βœ… .ai/rules/14-secret-management.md
βž– .codex/commands/security-audit.md
βœ… scripts/ai-loop/executor-state.ts 0
βœ… scripts/preflight/secret-cache.ts
βœ… scripts/sync-codex-commands.ts 0
βœ… .claude/commands/security-audit.md
βœ… .github/workflows/pr-readiness.yml
βœ… scripts/preflight/checks/env.ts 0
βœ… .ai/rules/21-agent-orchestration.md
βœ… .claude/commands/user-stories.md
βœ… .github/workflows/ai-fix-router.yml
βœ… scripts/preflight/checks/support.ts 0
βœ… scripts/preflight/fix/post-write.ts
βœ… scripts/preflight/version-policy.ts 0
βœ… .ai/rules/17-aws-well-architected.md
βœ… apps/web/src/kanbanConsoleMock.ts 0
βœ… scripts/preflight/checks/stack.ts 0
βœ… scripts/preflight/output/markdown.ts
βœ… scripts/preflight/output/terminal.ts 0
βœ… scripts/sync-codex-environment.ts 0
βž– scripts/tests/port-policy.spec.ts
βœ… scripts/preflight/fix/guided-fetch.ts 0
βœ… scripts/preflight/fix/provider-cli.ts
βž– .codex/commands/upgrade-multitenant.md
βœ… scripts/preflight/fix/auto-generate.ts 0
βœ… scripts/preflight/fix/env-bootstrap.ts 0
βœ… scripts/preflight/latest-versions.json
βœ… scripts/preflight/non-secret-keys.json
βœ… scripts/preflight/project-md-schema.ts 0
βœ… scripts/verify-template-adoption.sh
βœ… .claude/commands/upgrade-multitenant.md
βž– .codex/commands/extract-pr-learnings.md
βž– .codex/environments/environment.toml
βœ… scripts/preflight/fix/auto-derive.ts 0
βœ… .claude/commands/extract-pr-learnings.md
βž– apps/web/src/kanbanConsoleMock.test.ts
βœ… docs/tasks/t3-kanban-project-console.md
βœ… packages/contracts/src/kanbanConsole.ts
βœ… scripts/preflight/checks/integrations.ts 0
βœ… scripts/preflight/markdown-services-table.ts
βœ… scripts/tsconfig.json
βœ… vitest.config.ts
βœ… apps/server/src/kanban/GitStatusProvider.ts 0
βœ… scripts/preflight/checks/env/sync-env-guard.ts 0
βœ… .github/workflows/ai-fix-executor-claude.yml
βž– packages/contracts/src/kanbanConsole.test.ts
βœ… apps/web/src/components/KanbanConsoleMock.tsx 0
βž– .agents/skills/source-command-ifrs-audit/SKILL.md
βž– .agents/skills/source-command-pdpl-audit/SKILL.md
βœ… apps/server/src/kanban/AgentWorkflowLauncher.ts 0
βœ… apps/server/src/kanban/GitHubProjectsProvider.ts 0
βž– apps/server/src/kanban/GitStatusProvider.test.ts
βœ… apps/web/src/components/KanbanConsoleMock.browser.tsx 0
βœ… packages/contracts/src/index.ts
βž– apps/server/src/kanban/AgentWorkflowLauncher.test.ts
βž– apps/server/src/kanban/GitHubProjectsProvider.test.ts
βœ… .github/workflows/ci.yml
βœ… apps/web/src/routes/_chat.index.tsx 0
βž– bun.lock
βœ… AGENTS.md
βž– apps/web/src/routeTree.gen.ts
βœ… .github/pull_request_template.md

Filtered Issues Details

apps/server/src/kanban/GitHubProjectsProvider.ts
  • line 191: In fieldValue, the priority of the nullish coalescing on line 191 is reversed. When the GitHub CLI returns field values with structure { "field": { "name": "Status" }, "name": "In Progress" }, the expression trim(field.name) ?? trim(objectValue(field.field)?.name) evaluates field.name first, which yields the value ("In Progress") rather than the field name ("Status"). Since "in progress" is not in the wanted set for field names like "Status", the field is skipped and the lookup falls through to the fallback. The expression should be trim(objectValue(field.field)?.name) ?? trim(field.name) to prioritize the nested field.field.name (the actual field name) over field.name (which may hold the value). [ Failed validation ]
apps/server/src/kanban/GitStatusProvider.ts
  • line 535: The targetTagOutput git command is only executed when input.targetTag is explicitly provided, but targetTag on line 554 can also be derived from releaseTagFromBranch(branch). When input.targetTag is undefined and targetTag is derived from the branch name, targetTagOutput will always be an empty string (from Effect.succeed("")), causing the gate-tag-readiness gate to incorrectly report "passing" even if the derived tag already exists in the repository. [ Posting failed ]
scripts/ai-loop/config.ts
  • line 53: The config file path defaults to .github/ai-loop.yml (a YAML file), but the code uses JSON.parse() to parse it. YAML is a superset of JSON, meaning valid JSON is valid YAML, but not vice versa. If the config file uses any YAML-specific syntax (like unquoted strings, multi-line strings with |, anchors, etc.), JSON.parse() will throw a SyntaxError. Either the file extension should be .json, or a YAML parser library should be used. [ Failed validation ]
scripts/ai-loop/router-logic.ts
  • line 56: The function checks state.last_result_fingerprint but the calling code stores the fingerprint in state.last_signal_fingerprint. In router.ts, after computing findingSetFingerprint, it is assigned to last_signal_fingerprint (e.g., last_signal_fingerprint: findingSetFingerprint). However, shouldBlockRepeatedFindingSet compares against last_result_fingerprint, which is a different field that is never populated with the finding fingerprint. This means the repeated-finding-set detection will never trigger, defeating the intended blocking behavior. [ Failed validation ]
scripts/preflight/checks/integrations.ts
  • line 181: The doppler/yaml check provides a misleading hint even when the check passes. When files.length > 0 && !hasPlaceholder evaluates to true (status = "pass"), the hint is still set to "Replace placeholder Doppler project names." because the ternary at lines 182-185 only distinguishes between files.length === 0 and files.length > 0, not whether the check passed. Other checks in this file correctly use undefined for the hint when passing (e.g., line 221, line 250), but this one always provides a string hint. [ Failed validation ]
scripts/preflight/fix/apply.ts
  • line 35: The checks for stack-b/convex-deployment (lines 34-38) and stack-a/neon-url (lines 44-46) only verify status === "error" but do not check the fixable property, unlike the other fix conditions which use hasFixableIssue. This inconsistency means fixes will be attempted for these checks even if they report fixable: false, potentially running provider CLI commands when the check explicitly indicated the issue cannot be auto-fixed. [ Posting failed ]