factory-hygiene row 41 (orthogonal-axes audit) + fork-pr-workflow -1 gotcha#50
Conversation
…gotcha Two changes, one PR (causally linked via this session's fork-PR test run): 1. FACTORY-HYGIENE row Lucent-Financial-Group#41 + BACKLOG P1 row — cadenced audit (every 5-10 rounds) that sweeps the factory's classification axes for overlap. Distinct from row 22 (symmetry): symmetry asks "is A paired with its mirror B?"; orthogonality asks "do axes A and B have zero overlap?" Triggered by Aaron 2026-04-22: "also we need to make sure all our axises are orthogaonal to the others so therre is not overlap, like fully ... the set of axes is called an orthogonal basis" + "i guess this is a cadence thing" + "backlog". Durable rule in feedback_orthogonal_axes_factory_hygiene.md (memory-only, not in repo). 2. fork-pr-workflow skill — document the "-1 suffix" gotcha that `gh repo fork` produces when the forker's namespace has a redirect record blocking the target name (common after transferring a repo away and then forking it back). Surfaced during this session when forking Lucent-Financial-Group/Zeta back to AceHack — the forked repo landed at AceHack/Zeta-1 because AceHack/Zeta still redirected to LFG/Zeta post-transfer. Recovery is `gh repo rename --repo <you>/<repo>-1 <repo>` (the forker owns the redirect record and can override it). Added as a subsection under "Initial setup". Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
Adds documentation for a new cadenced “orthogonal-axes audit” hygiene item and captures a fork-based contribution workflow edge case where gh repo fork may create <repo>-1 due to a redirect record.
Changes:
- Add FACTORY-HYGIENE row #41 defining an orthogonal-axes audit cadence and outputs.
- Add a P1 BACKLOG item to queue the first orthogonality audit pass + ownership decision.
- Extend the
fork-pr-workflowskill to document detection and recovery forgh repo fork-1suffix forks.
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
| docs/FACTORY-HYGIENE.md | Adds row #41 describing the orthogonal-axes cadenced audit. |
| docs/BACKLOG.md | Adds a P1 backlog entry to run/operationalize the orthogonal-axes audit. |
| .claude/skills/fork-pr-workflow/SKILL.md | Documents the -1 fork-name gotcha plus detection and recovery steps. |
| scope factory). Durable rule in | ||
| `memory/feedback_orthogonal_axes_factory_hygiene.md`. **Work | ||
| queued here:** (a) first audit pass — enumerate current | ||
| factory axes, build pairwise overlap matrix, flag per-pair | ||
| verdicts (collapse / keep-and-document / split); (b) |
There was a problem hiding this comment.
memory/feedback_orthogonal_axes_factory_hygiene.md is referenced as a “durable rule” here, but that file does not exist under memory/ (and docs/FACTORY-HYGIENE.md currently calls it “to be written”). This creates a broken pointer and makes it unclear where the canonical write-up lives. Either add the memory file in this PR or change this reference to match the current state (e.g., mark it as to-be-written / point at the actual existing source-of-truth).
| scope factory). Durable rule in | |
| `memory/feedback_orthogonal_axes_factory_hygiene.md`. **Work | |
| queued here:** (a) first audit pass — enumerate current | |
| factory axes, build pairwise overlap matrix, flag per-pair | |
| verdicts (collapse / keep-and-document / split); (b) | |
| scope factory) is the current source of truth; durable | |
| memory file `memory/feedback_orthogonal_axes_factory_hygiene.md` | |
| still to be written. **Work queued here:** (a) first audit | |
| pass — enumerate current factory axes, build pairwise | |
| overlap matrix, flag per-pair verdicts (collapse / | |
| keep-and-document / split); (b) |
…+ map-completeness BACKLOG + map-drift log
Aaron 2026-04-22 flagged two related smells during LFG budget audit:
(1) "i'm supprised you got the url wrong given you mapped it" +
"that should be a smell when that happen to a surface you
already have mapped"
Agent invented /orgs/.../billing/budgets (404) despite
docs/research/github-surface-map-complete-2026-04-22.md
already being the complete mapping. FACTORY-HYGIENE row Lucent-Financial-Group#50
codifies the smell as:
- Pre-call: grep the map before `gh api <path>`.
- Post-call: 410/301 on a mapped endpoint auto-proposes a
map-update.
- Cadenced: 5-10 round replay of mapped endpoints to catch
silent renames.
(2) "missing map hygene on backlog?"
Complementary proactive audit that row Lucent-Financial-Group#50 doesn't cover:
"does the map cover all surfaces we actually touch?".
Filed as P1 BACKLOG row under factory/tooling section.
Known gaps surfaced by the triggering incident: GitHub
org spending-budget UI (now mapped as `ui-only`); Copilot
Business per-feature toggle state; coding-agent / internet-
search enablement flags.
Same incident revealed separate map-drift:
/orgs/{org}/settings/billing/actions returned 410 with
documentation_url: https://gh.io/billing-api-updates-org.
Logged in new "Map drift log" section of the research doc;
old-path preserved, successor TBD per GitHub's migration doc.
New "UI-only surfaces" subsection in the research doc
documents surfaces with no REST equivalent (budget management,
audit-log on Team plan) so agents don't waste attempts on
non-existent paths. Budget management stays in the *forbidden*
class per the LFG paid-Copilot memory.
Memory:
- memory/feedback_surface_map_consultation_before_guessing_urls.md
- MEMORY.md index entry added.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…+ map-completeness BACKLOG + map-drift log (#8) Aaron 2026-04-22 flagged two related smells during LFG budget audit: (1) "i'm supprised you got the url wrong given you mapped it" + "that should be a smell when that happen to a surface you already have mapped" Agent invented /orgs/.../billing/budgets (404) despite docs/research/github-surface-map-complete-2026-04-22.md already being the complete mapping. FACTORY-HYGIENE row Lucent-Financial-Group#50 codifies the smell as: - Pre-call: grep the map before `gh api <path>`. - Post-call: 410/301 on a mapped endpoint auto-proposes a map-update. - Cadenced: 5-10 round replay of mapped endpoints to catch silent renames. (2) "missing map hygene on backlog?" Complementary proactive audit that row Lucent-Financial-Group#50 doesn't cover: "does the map cover all surfaces we actually touch?". Filed as P1 BACKLOG row under factory/tooling section. Known gaps surfaced by the triggering incident: GitHub org spending-budget UI (now mapped as `ui-only`); Copilot Business per-feature toggle state; coding-agent / internet- search enablement flags. Same incident revealed separate map-drift: /orgs/{org}/settings/billing/actions returned 410 with documentation_url: https://gh.io/billing-api-updates-org. Logged in new "Map drift log" section of the research doc; old-path preserved, successor TBD per GitHub's migration doc. New "UI-only surfaces" subsection in the research doc documents surfaces with no REST equivalent (budget management, audit-log on Team plan) so agents don't waste attempts on non-existent paths. Budget management stays in the *forbidden* class per the LFG paid-Copilot memory. Memory: - memory/feedback_surface_map_consultation_before_guessing_urls.md - MEMORY.md index entry added. Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
Aaron 2026-04-23: "we probalby need some meta iteam to refactor the backlog base on current knowledge and look for overlap, this is hygene we could run from time to time so our backlog is not just a dump". Wires the directive to the existing meta-hygiene cadence (same 5-10 round cadence as rows #5 / #23 / #38 / #46). Five passes per firing: overlap cluster / stale retire / re-prioritize / knowledge absorb / document via ROUND-HISTORY. Row #54 (rather than #53) to avoid collision with the AutoDream cadenced consolidation row on the research/autodream-extension-and-cadence branch (PR #155, still open) which already claimed #53. Classification per row #50: detection-only-justified — accumulated drift (overlap, staleness, priority-drift, knowledge-gap) is inherently post-hoc. Governing rule lives in per-user memory: feedback_backlog_hygiene_cadenced_refactor_look_for_overlap_not_just_dump_2026_04_23.md Self-scheduled free work under the 2026-04-23 scheduling- authority rule. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…#166) * hygiene: row #54 — backlog-refactor cadenced audit Aaron 2026-04-23: "we probalby need some meta iteam to refactor the backlog base on current knowledge and look for overlap, this is hygene we could run from time to time so our backlog is not just a dump". Wires the directive to the existing meta-hygiene cadence (same 5-10 round cadence as rows #5 / #23 / #38 / #46). Five passes per firing: overlap cluster / stale retire / re-prioritize / knowledge absorb / document via ROUND-HISTORY. Row #54 (rather than #53) to avoid collision with the AutoDream cadenced consolidation row on the research/autodream-extension-and-cadence branch (PR #155, still open) which already claimed #53. Classification per row #50: detection-only-justified — accumulated drift (overlap, staleness, priority-drift, knowledge-gap) is inherently post-hoc. Governing rule lives in per-user memory: feedback_backlog_hygiene_cadenced_refactor_look_for_overlap_not_just_dump_2026_04_23.md Self-scheduled free work under the 2026-04-23 scheduling- authority rule. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * hygiene #54: address Copilot review — contributor-name + memory-path Two of the three findings addressed: - Replace "Aaron 2026-04-23" with "the human maintainer 2026-04-23" (+ "Aaron-scope boundary" → "Maintainer-scope boundary") per contributor-name guidance - Clarify the governing-rule memory lives in per-user memory (not in-repo); absolute path given; no in-repo pointer to a non-existent file Third finding (row #54 out of numeric order) will be replied inline with rationale — #53 is reserved for PR #155's AutoDream cadenced-consolidation row still open; #54 gives clean numbering on merge. Not a bug — intentional reservation. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
…ment-based review cadence) (#217) Human maintainer 2026-04-23 Otto-58 named a NEW hygiene class distinct from the ~57 mechanically-verifiable FACTORY-HYGIENE rows: "agents review hygene on a cadence for a specific type of thing, this one is look for generalization opportunities in the code, for example the docker for reproducability for multi agent review can be generalize to everyting in the project, all applieas to code skills docs everyting" "backlog" Key insight: existing FACTORY-HYGIENE rows check "did we do X?" (mechanical, binary). This class asks "are we applying principle P wherever P applies?" (judgment, scope-extension). Complementary, not duplicative. BACKLOG row filed under new P1 section "Principle-adherence review cadence (Otto-58 new hygiene class)". M effort. Worked example: Docker-for-reproducibility (currently scoped to multi-agent peer-review per Otto-55/57) generalizes to devcontainer, per-sample Dockerfile, benchmark-harness containers, Craft module build envs, CI image pinning. Review emits these as BACKLOG candidates; per-candidate ROI decides which to implement. First-pass principle catalogue (12 principles): git-native/in-repo- first/samples-vs-production/applied-default/honest-about-error/ Codex-as-reviewer/detect-first/honor-those-before/Docker-repro/ CLI-first/trust-approval/split-attention. Protocol shape: 1. Define principle (1 sentence + memory citation) 2. Current scope (1-2 concrete examples) 3. Bounded sweep (N minutes, top-K candidates) 4. Emit per-candidate BACKLOG rows 5. ROUND-HISTORY row noting the review Cadence: every 10-20 rounds per principle; sharded across agents by principle class; first-pass triggered by principle-introduction events. Classification (row #50): detection-only-justified — generalization opportunities are inherently post-hoc. Composes with row #23 (missing-class) + #22 (symmetry) + #41 (orthogonal- axes) as judgment-based meta-audit triad/quad. Per-user memory: project_principle_adherence_review_new_hygiene_class_ cadenced_judgment_on_generalization_opportunities_2026_04_23.md Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
…CKLOG + map-drift log
Aaron 2026-04-22 flagged two related smells during LFG budget audit:
(1) "i'm supprised you got the url wrong given you mapped it" +
"that should be a smell when that happen to a surface you
already have mapped"
Agent invented /orgs/.../billing/budgets (404) despite
docs/research/github-surface-map-complete-2026-04-22.md
already being the complete mapping. FACTORY-HYGIENE row #50
codifies the smell as:
- Pre-call: grep the map before `gh api <path>`.
- Post-call: 410/301 on a mapped endpoint auto-proposes a
map-update.
- Cadenced: 5-10 round replay of mapped endpoints to catch
silent renames.
(2) "missing map hygene on backlog?"
Complementary proactive audit that row #50 doesn't cover:
"does the map cover all surfaces we actually touch?".
Filed as P1 BACKLOG row under factory/tooling section.
Known gaps surfaced by the triggering incident: GitHub
org spending-budget UI (now mapped as `ui-only`); Copilot
Business per-feature toggle state; coding-agent / internet-
search enablement flags.
Same incident revealed separate map-drift:
/orgs/{org}/settings/billing/actions returned 410 with
documentation_url: https://gh.io/billing-api-updates-org.
Logged in new "Map drift log" section of the research doc;
old-path preserved, successor TBD per GitHub's migration doc.
New "UI-only surfaces" subsection in the research doc
documents surfaces with no REST equivalent (budget management,
audit-log on Team plan) so agents don't waste attempts on
non-existent paths. Budget management stays in the *forbidden*
class per the LFG paid-Copilot memory.
Memory:
- memory/feedback_surface_map_consultation_before_guessing_urls.md
- MEMORY.md index entry added.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…CKLOG + map-drift log (#140) Aaron 2026-04-22 flagged two related smells during LFG budget audit: (1) "i'm supprised you got the url wrong given you mapped it" + "that should be a smell when that happen to a surface you already have mapped" Agent invented /orgs/.../billing/budgets (404) despite docs/research/github-surface-map-complete-2026-04-22.md already being the complete mapping. FACTORY-HYGIENE row #50 codifies the smell as: - Pre-call: grep the map before `gh api <path>`. - Post-call: 410/301 on a mapped endpoint auto-proposes a map-update. - Cadenced: 5-10 round replay of mapped endpoints to catch silent renames. (2) "missing map hygene on backlog?" Complementary proactive audit that row #50 doesn't cover: "does the map cover all surfaces we actually touch?". Filed as P1 BACKLOG row under factory/tooling section. Known gaps surfaced by the triggering incident: GitHub org spending-budget UI (now mapped as `ui-only`); Copilot Business per-feature toggle state; coding-agent / internet- search enablement flags. Same incident revealed separate map-drift: /orgs/{org}/settings/billing/actions returned 410 with documentation_url: https://gh.io/billing-api-updates-org. Logged in new "Map drift log" section of the research doc; old-path preserved, successor TBD per GitHub's migration doc. New "UI-only surfaces" subsection in the research doc documents surfaces with no REST equivalent (budget management, audit-log on Team plan) so agents don't waste attempts on non-existent paths. Budget management stays in the *forbidden* class per the LFG paid-Copilot memory. Memory: - memory/feedback_surface_map_consultation_before_guessing_urls.md - MEMORY.md index entry added. Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
Summary
Two changes, one PR — causally linked via this session's fork-PR test run (PR #49 landed batch 1 of the speculative drain via the AceHack fork, surfaced both items):
FACTORY-HYGIENE row ci: listen on merge_group + document merge-queue plan #41 + BACKLOG P1 row — cadenced audit (every 5-10 rounds) that sweeps the factory's classification axes for overlap. Trigger: Aaron 2026-04-22 explicit ask — "we need to make sure all our axises are orthogonal to the others so there is not overlap ... When all your axes are orthogonal basis covered (meaning they are mutually perpendicular), the set of axes is called an orthogonal basis" + "i guess this is a cadence thing" + "backlog". The rule: every pair of factory classification axes (skill-category, hygiene-scope, persona-surface, cadence-bucket, memory-type, review-target, trust-tier, ...) must be mutually independent. Overlap = rank-reduction and duplicate naming. Distinct from the symmetry audit (row Round 33 — VISION v10: fastest-in-all-classes ambition (OLTP+OLAP+event+cache+streaming) #22): symmetry asks "is A paired with its mirror B?"; orthogonality asks "do axes A and B have zero overlap?"
fork-pr-workflow skill — document the
-1suffix gotcha. Whengh repo forkis run on a repo that was transferred out of your account, GitHub's 301 redirect record from the pre-transfer namespace reserves the plain name in your account, sogh repo forksilently names your fork<repo>-1. The skill now documents: (a) detection viacurl -sI https://github.com/<you>/<repo>showing HTTP 301, (b) recovery viagh repo rename --repo <you>/<repo>-1 <repo>(fork owner can override their own redirect record), (c) confirmation that existing cross-repo PRs continue to work after the rename because GitHub tracks PR head by repo ID not name. This is a contributor-facing UX fix — future contributors hit documented recovery instead of unexpected-1.Test plan
AceHack/Zeta-1→AceHack/Zetavalidated (this PR ships via the renamed fork)