You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* refactor(truth): single-source portfolio-truth-latest.json via truth_latest_path()
Introduce TRUTH_LATEST_FILENAME + truth_latest_path(output_dir) in
portfolio_truth_types (the domain leaf), and route all 19 path-join
sites + the glob through it. The filename now lives in one place
instead of being reconstructed across cli, serve/routes, report
enrichment, weekly command center, excel export, and the publisher.
Human-readable error/log copy and docstrings keep the literal as
prose. No behavior change.
* feat(automation): use per-repo default branch for context-PR base
The bounded-automation executor opened context-improvement PRs against a
hardcoded 'main' base. Detect each repo's actual default branch from the
local origin/HEAD ref (no network) in the truth-build pipeline, carry it
through IdentityFields, and resolve the PR base in precedence order:
explicit caller override > repo-detected default > portfolio fallback.
- portfolio_truth_sources: _git_default_branch() + thread through git facts
(also DRYs _gather_git_facts' repeated dict construction)
- IdentityFields.default_branch: new optional field (additive, '' default)
- automation_workflow.build_context_pr_plan: resolve per-repo, '' = auto
Covered: origin/HEAD detection incl. multi-segment branches + unset
fallback; plan precedence (detected vs explicit override).
* fix(automation): harden executor failure paths (orphan branch + missing PR URL)
Two edge cases in execute_context_pr:
- branch-orphan: when apply_change fails after 'git checkout -b', the
executor returned to the default branch but left the created branch
behind, so a retry hit 'branch already exists'. Now delete the orphan
on rollback — the operation is retry-safe.
- empty execution_ref: when gh pr create succeeds (rc 0) with no URL on
stdout, the proposal silently recorded an empty audit ref. The PR was
created (re-running would duplicate it), so keep 'applied' but surface
the missing URL in the detail instead of losing it silently.
* chore(deps): remove vestigial uv.lock
Nothing reads this lockfile: every install path (ci.yml, audit.yml,
release.yml) uses `pip install -e ".[extras]"` resolved from
pyproject.toml. There is no [tool.uv] config and no CI `uv lock --check`,
so the committed lock had drifted lean while a fresh `uv lock` resolves
the full optional-extra tree (torch/CUDA/transformers).
Removing it stops Dependabot from opening regressive weekly uv-lock PRs
against an artifact that affects nothing. pip + pyproject is the real,
authoritative install path.
* fix(automation): force-checkout default branch on apply_change rollback
Review follow-up to eeb910c. The orphan-branch cleanup only worked when
apply_change failed without dirtying the tree. In the common case where
apply_change writes a partial file then raises, a plain checkout of the
default branch is blocked ('local changes would be overwritten'), its
unchecked returncode leaves HEAD on the orphan, and the orphan delete is
then refused ('currently checked out') — stranding the repo on the orphan,
the exact failure the cleanup targets.
Use a force checkout: the worktree is verified clean before apply_change
(skip-dirty rail), so it only discards apply_change's partial writes, then
the orphan deletes cleanly.
0 commit comments