Skip to content

Block tracked Humanize loop state from entering git history - #86

Merged
SihaoLiu merged 2 commits into
PolyArch:devfrom
xyyy1420:dev
Apr 16, 2026
Merged

Block tracked Humanize loop state from entering git history#86
SihaoLiu merged 2 commits into
PolyArch:devfrom
xyyy1420:dev

Conversation

@xyyy1420

Copy link
Copy Markdown
Contributor

Summary

Add a second layer of protection so local Humanize loop state cannot silently enter git history.

This keeps the existing git add command blocking, and adds a stop-gate audit that fails fast when .humanize/ or legacy .humanize-* state has already been tracked or staged.

What changed

  • add a dedicated stop-hook check for tracked or staged Humanize loop state
  • add a dedicated block message for tracked Humanize state
  • tighten the generic git-dirty guidance so RLCR no longer recommends git add -A
  • extend the git add protection tests to cover RLCR tracker and round artifact paths
  • extend the stop-gate tests to verify tracked Humanize state blocks with a dedicated reason

Why

This change is motivated by a real RLCR failure mode:

  • a local loop artifact can be force-added into the git index
  • once that happens, later review rounds can start treating RLCR state files as ordinary tracked changes
  • that shifts review attention away from the actual branch work and creates repeated review churn around tracker and round-artifact files

In practice, a single mistaken force-add can redirect later review noise toward local RLCR artifacts such as the goal tracker, instead of keeping review focused on the real code changes.

The previous protection was mostly command-side:

  • block direct git add .humanize
  • block broad git add -A / git add . patterns when local loop state exists

That still left a gap:

  • if .humanize state was force-added or otherwise entered the index, the stop gate only saw a generic dirty tree
  • it did not fail with a specific “local loop state is tracked” reason

This patch closes that gap.

Behavior after this change

  • untracked local loop state remains allowed
  • direct or broad git add commands that would include .humanize/ are still blocked
  • if .humanize/ or legacy .humanize-* has already entered tracking or the index, the stop gate blocks with a dedicated remediation message

Validation

  • bash tests/test-humanize-escape.sh
  • bash tests/test-stop-gate.sh

@chatgpt-codex-connectorchatgpt-codex-connectorBot 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit:a9078aaf4d

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment threadhooks/lib/loop-common.sh Outdated
if git -C "$project_root" ls-files --error-unmatch .humanize >/dev/null 2>&1; then
return 0
fi
if git -C "$project_root" ls-files '.humanize/*' '.humanize-*' | grep -q '.'; then

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Narrow tracked-state match to loop artifacts only

The new tracked-state check now treats any top-level .humanize-* path as loop state, which causes false blocks for legitimate files like .humanize-backup that are explicitly allowed elsewhere (see tests/test-humanize-escape.sh allow-case). In an active loop, a repo that intentionally tracks such a file will now be blocked on every stop attempt with “Tracked Humanize State Blocked,” even when there are no RLCR artifacts, forcing removal of unrelated tracked files to proceed.

Useful? React with 👍 / 👎.

The tracked-state check used '.humanize-*' globs which matched unrelated
dot-prefixed files the command-side guard already allows (for example
.humanize-backup and .humanizeconfig, per tests/test-humanize-escape.sh).
In an active loop, a repo that intentionally tracked such a file was
incorrectly blocked with "Tracked Humanize State Blocked" even with no
RLCR artifacts present.
Scope the detection to .humanize/ via a single ls-files pathspec. This
stays consistent with git_adds_humanize, correctly omits paths the user
has staged for removal via git rm --cached, and drops the redundant
diff --cached probe.
Update the block message (inline fallback and prompt template) to drop
the dangerous "git rm --cached -r .humanize-*" hint, which could strip
user files like .humanize-backup from the index.
Add a stop-gate regression test asserting that tracked .humanize-backup
and .humanizeconfig do not trigger the tracked-state block reason.
@SihaoLiu

Copy link
Copy Markdown
Contributor

@codex please review this PR

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Chef's kiss.

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@SihaoLiuSihaoLiu left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

lgtm

@SihaoLiu
SihaoLiu merged commit 0f025cb into PolyArch:devApr 16, 2026
5 of 6 checks passed
@SihaoLiuSihaoLiu mentioned this pull request Apr 21, 2026
Sign up for freeto 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.

2 participants

@xyyy1420@SihaoLiu
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
 Block tracked Humanize loop state from entering git history by xyyy1420 · Pull Request #86 · PolyArch/humanize · GitHub
Skip to content

Block tracked Humanize loop state from entering git history - #86

Merged
SihaoLiu merged 2 commits into
PolyArch:devfrom
xyyy1420:dev
Apr 16, 2026
Merged

Block tracked Humanize loop state from entering git history#86
SihaoLiu merged 2 commits into
PolyArch:devfrom
xyyy1420:dev

Conversation

@xyyy1420

Copy link
Copy Markdown
Contributor

Summary

Add a second layer of protection so local Humanize loop state cannot silently enter git history.

This keeps the existing git add command blocking, and adds a stop-gate audit that fails fast when .humanize/ or legacy .humanize-* state has already been tracked or staged.

What changed

  • add a dedicated stop-hook check for tracked or staged Humanize loop state
  • add a dedicated block message for tracked Humanize state
  • tighten the generic git-dirty guidance so RLCR no longer recommends git add -A
  • extend the git add protection tests to cover RLCR tracker and round artifact paths
  • extend the stop-gate tests to verify tracked Humanize state blocks with a dedicated reason

Why

This change is motivated by a real RLCR failure mode:

  • a local loop artifact can be force-added into the git index
  • once that happens, later review rounds can start treating RLCR state files as ordinary tracked changes
  • that shifts review attention away from the actual branch work and creates repeated review churn around tracker and round-artifact files

In practice, a single mistaken force-add can redirect later review noise toward local RLCR artifacts such as the goal tracker, instead of keeping review focused on the real code changes.

The previous protection was mostly command-side:

  • block direct git add .humanize
  • block broad git add -A / git add . patterns when local loop state exists

That still left a gap:

  • if .humanize state was force-added or otherwise entered the index, the stop gate only saw a generic dirty tree
  • it did not fail with a specific “local loop state is tracked” reason

This patch closes that gap.

Behavior after this change

  • untracked local loop state remains allowed
  • direct or broad git add commands that would include .humanize/ are still blocked
  • if .humanize/ or legacy .humanize-* has already entered tracking or the index, the stop gate blocks with a dedicated remediation message

Validation

  • bash tests/test-humanize-escape.sh
  • bash tests/test-stop-gate.sh

@chatgpt-codex-connectorchatgpt-codex-connectorBot 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit:a9078aaf4d

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment threadhooks/lib/loop-common.sh Outdated
if git -C "$project_root" ls-files --error-unmatch .humanize >/dev/null 2>&1; then
return 0
fi
if git -C "$project_root" ls-files '.humanize/*' '.humanize-*' | grep -q '.'; then

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Narrow tracked-state match to loop artifacts only

The new tracked-state check now treats any top-level .humanize-* path as loop state, which causes false blocks for legitimate files like .humanize-backup that are explicitly allowed elsewhere (see tests/test-humanize-escape.sh allow-case). In an active loop, a repo that intentionally tracks such a file will now be blocked on every stop attempt with “Tracked Humanize State Blocked,” even when there are no RLCR artifacts, forcing removal of unrelated tracked files to proceed.

Useful? React with 👍 / 👎.

The tracked-state check used '.humanize-*' globs which matched unrelated
dot-prefixed files the command-side guard already allows (for example
.humanize-backup and .humanizeconfig, per tests/test-humanize-escape.sh).
In an active loop, a repo that intentionally tracked such a file was
incorrectly blocked with "Tracked Humanize State Blocked" even with no
RLCR artifacts present.
Scope the detection to .humanize/ via a single ls-files pathspec. This
stays consistent with git_adds_humanize, correctly omits paths the user
has staged for removal via git rm --cached, and drops the redundant
diff --cached probe.
Update the block message (inline fallback and prompt template) to drop
the dangerous "git rm --cached -r .humanize-*" hint, which could strip
user files like .humanize-backup from the index.
Add a stop-gate regression test asserting that tracked .humanize-backup
and .humanizeconfig do not trigger the tracked-state block reason.
@SihaoLiu

Copy link
Copy Markdown
Contributor

@codex please review this PR

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Chef's kiss.

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@SihaoLiuSihaoLiu left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

lgtm

@SihaoLiu
SihaoLiu merged commit 0f025cb into PolyArch:devApr 16, 2026
5 of 6 checks passed
@SihaoLiuSihaoLiu mentioned this pull request Apr 21, 2026
Sign up for freeto 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.

2 participants

@xyyy1420@SihaoLiu
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Block tracked Humanize loop state from entering git history by xyyy1420 · Pull Request #86 · PolyArch/humanize · GitHub
Skip to content

Block tracked Humanize loop state from entering git history - #86

Merged
SihaoLiu merged 2 commits into
PolyArch:devfrom
xyyy1420:dev
Apr 16, 2026
Merged

Block tracked Humanize loop state from entering git history#86
SihaoLiu merged 2 commits into
PolyArch:devfrom
xyyy1420:dev

Conversation

@xyyy1420

Copy link
Copy Markdown
Contributor

Summary

Add a second layer of protection so local Humanize loop state cannot silently enter git history.

This keeps the existing git add command blocking, and adds a stop-gate audit that fails fast when .humanize/ or legacy .humanize-* state has already been tracked or staged.

What changed

  • add a dedicated stop-hook check for tracked or staged Humanize loop state
  • add a dedicated block message for tracked Humanize state
  • tighten the generic git-dirty guidance so RLCR no longer recommends git add -A
  • extend the git add protection tests to cover RLCR tracker and round artifact paths
  • extend the stop-gate tests to verify tracked Humanize state blocks with a dedicated reason

Why

This change is motivated by a real RLCR failure mode:

  • a local loop artifact can be force-added into the git index
  • once that happens, later review rounds can start treating RLCR state files as ordinary tracked changes
  • that shifts review attention away from the actual branch work and creates repeated review churn around tracker and round-artifact files

In practice, a single mistaken force-add can redirect later review noise toward local RLCR artifacts such as the goal tracker, instead of keeping review focused on the real code changes.

The previous protection was mostly command-side:

  • block direct git add .humanize
  • block broad git add -A / git add . patterns when local loop state exists

That still left a gap:

  • if .humanize state was force-added or otherwise entered the index, the stop gate only saw a generic dirty tree
  • it did not fail with a specific “local loop state is tracked” reason

This patch closes that gap.

Behavior after this change

  • untracked local loop state remains allowed
  • direct or broad git add commands that would include .humanize/ are still blocked
  • if .humanize/ or legacy .humanize-* has already entered tracking or the index, the stop gate blocks with a dedicated remediation message

Validation

  • bash tests/test-humanize-escape.sh
  • bash tests/test-stop-gate.sh

@chatgpt-codex-connectorchatgpt-codex-connectorBot 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit:a9078aaf4d

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment threadhooks/lib/loop-common.sh Outdated
if git -C "$project_root" ls-files --error-unmatch .humanize >/dev/null 2>&1; then
return 0
fi
if git -C "$project_root" ls-files '.humanize/*' '.humanize-*' | grep -q '.'; then

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Narrow tracked-state match to loop artifacts only

The new tracked-state check now treats any top-level .humanize-* path as loop state, which causes false blocks for legitimate files like .humanize-backup that are explicitly allowed elsewhere (see tests/test-humanize-escape.sh allow-case). In an active loop, a repo that intentionally tracks such a file will now be blocked on every stop attempt with “Tracked Humanize State Blocked,” even when there are no RLCR artifacts, forcing removal of unrelated tracked files to proceed.

Useful? React with 👍 / 👎.

The tracked-state check used '.humanize-*' globs which matched unrelated
dot-prefixed files the command-side guard already allows (for example
.humanize-backup and .humanizeconfig, per tests/test-humanize-escape.sh).
In an active loop, a repo that intentionally tracked such a file was
incorrectly blocked with "Tracked Humanize State Blocked" even with no
RLCR artifacts present.
Scope the detection to .humanize/ via a single ls-files pathspec. This
stays consistent with git_adds_humanize, correctly omits paths the user
has staged for removal via git rm --cached, and drops the redundant
diff --cached probe.
Update the block message (inline fallback and prompt template) to drop
the dangerous "git rm --cached -r .humanize-*" hint, which could strip
user files like .humanize-backup from the index.
Add a stop-gate regression test asserting that tracked .humanize-backup
and .humanizeconfig do not trigger the tracked-state block reason.
@SihaoLiu

Copy link
Copy Markdown
Contributor

@codex please review this PR

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Chef's kiss.

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@SihaoLiuSihaoLiu left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

lgtm

@SihaoLiu
SihaoLiu merged commit 0f025cb into PolyArch:devApr 16, 2026
5 of 6 checks passed
@SihaoLiuSihaoLiu mentioned this pull request Apr 21, 2026
Sign up for freeto 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.

2 participants

@xyyy1420@SihaoLiu
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Block tracked Humanize loop state from entering git history by xyyy1420 · Pull Request #86 · PolyArch/humanize · GitHub
Skip to content

Block tracked Humanize loop state from entering git history - #86

Merged
SihaoLiu merged 2 commits into
PolyArch:devfrom
xyyy1420:dev
Apr 16, 2026
Merged

Block tracked Humanize loop state from entering git history#86
SihaoLiu merged 2 commits into
PolyArch:devfrom
xyyy1420:dev

Conversation

@xyyy1420

Copy link
Copy Markdown
Contributor

Summary

Add a second layer of protection so local Humanize loop state cannot silently enter git history.

This keeps the existing git add command blocking, and adds a stop-gate audit that fails fast when .humanize/ or legacy .humanize-* state has already been tracked or staged.

What changed

  • add a dedicated stop-hook check for tracked or staged Humanize loop state
  • add a dedicated block message for tracked Humanize state
  • tighten the generic git-dirty guidance so RLCR no longer recommends git add -A
  • extend the git add protection tests to cover RLCR tracker and round artifact paths
  • extend the stop-gate tests to verify tracked Humanize state blocks with a dedicated reason

Why

This change is motivated by a real RLCR failure mode:

  • a local loop artifact can be force-added into the git index
  • once that happens, later review rounds can start treating RLCR state files as ordinary tracked changes
  • that shifts review attention away from the actual branch work and creates repeated review churn around tracker and round-artifact files

In practice, a single mistaken force-add can redirect later review noise toward local RLCR artifacts such as the goal tracker, instead of keeping review focused on the real code changes.

The previous protection was mostly command-side:

  • block direct git add .humanize
  • block broad git add -A / git add . patterns when local loop state exists

That still left a gap:

  • if .humanize state was force-added or otherwise entered the index, the stop gate only saw a generic dirty tree
  • it did not fail with a specific “local loop state is tracked” reason

This patch closes that gap.

Behavior after this change

  • untracked local loop state remains allowed
  • direct or broad git add commands that would include .humanize/ are still blocked
  • if .humanize/ or legacy .humanize-* has already entered tracking or the index, the stop gate blocks with a dedicated remediation message

Validation

  • bash tests/test-humanize-escape.sh
  • bash tests/test-stop-gate.sh

@chatgpt-codex-connectorchatgpt-codex-connectorBot 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit:a9078aaf4d

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment threadhooks/lib/loop-common.sh Outdated
if git -C "$project_root" ls-files --error-unmatch .humanize >/dev/null 2>&1; then
return 0
fi
if git -C "$project_root" ls-files '.humanize/*' '.humanize-*' | grep -q '.'; then

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Narrow tracked-state match to loop artifacts only

The new tracked-state check now treats any top-level .humanize-* path as loop state, which causes false blocks for legitimate files like .humanize-backup that are explicitly allowed elsewhere (see tests/test-humanize-escape.sh allow-case). In an active loop, a repo that intentionally tracks such a file will now be blocked on every stop attempt with “Tracked Humanize State Blocked,” even when there are no RLCR artifacts, forcing removal of unrelated tracked files to proceed.

Useful? React with 👍 / 👎.

The tracked-state check used '.humanize-*' globs which matched unrelated
dot-prefixed files the command-side guard already allows (for example
.humanize-backup and .humanizeconfig, per tests/test-humanize-escape.sh).
In an active loop, a repo that intentionally tracked such a file was
incorrectly blocked with "Tracked Humanize State Blocked" even with no
RLCR artifacts present.
Scope the detection to .humanize/ via a single ls-files pathspec. This
stays consistent with git_adds_humanize, correctly omits paths the user
has staged for removal via git rm --cached, and drops the redundant
diff --cached probe.
Update the block message (inline fallback and prompt template) to drop
the dangerous "git rm --cached -r .humanize-*" hint, which could strip
user files like .humanize-backup from the index.
Add a stop-gate regression test asserting that tracked .humanize-backup
and .humanizeconfig do not trigger the tracked-state block reason.
@SihaoLiu

Copy link
Copy Markdown
Contributor

@codex please review this PR

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Chef's kiss.

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@SihaoLiuSihaoLiu left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

lgtm

@SihaoLiu
SihaoLiu merged commit 0f025cb into PolyArch:devApr 16, 2026
5 of 6 checks passed
@SihaoLiuSihaoLiu mentioned this pull request Apr 21, 2026
Sign up for freeto 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.

2 participants

@xyyy1420@SihaoLiu
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' Block tracked Humanize loop state from entering git history by xyyy1420 · Pull Request #86 · PolyArch/humanize · GitHub
Skip to content

Block tracked Humanize loop state from entering git history - #86

Merged
SihaoLiu merged 2 commits into
PolyArch:devfrom
xyyy1420:dev
Apr 16, 2026
Merged

Block tracked Humanize loop state from entering git history#86
SihaoLiu merged 2 commits into
PolyArch:devfrom
xyyy1420:dev

Conversation

@xyyy1420

Copy link
Copy Markdown
Contributor

Summary

Add a second layer of protection so local Humanize loop state cannot silently enter git history.

This keeps the existing git add command blocking, and adds a stop-gate audit that fails fast when .humanize/ or legacy .humanize-* state has already been tracked or staged.

What changed

  • add a dedicated stop-hook check for tracked or staged Humanize loop state
  • add a dedicated block message for tracked Humanize state
  • tighten the generic git-dirty guidance so RLCR no longer recommends git add -A
  • extend the git add protection tests to cover RLCR tracker and round artifact paths
  • extend the stop-gate tests to verify tracked Humanize state blocks with a dedicated reason

Why

This change is motivated by a real RLCR failure mode:

  • a local loop artifact can be force-added into the git index
  • once that happens, later review rounds can start treating RLCR state files as ordinary tracked changes
  • that shifts review attention away from the actual branch work and creates repeated review churn around tracker and round-artifact files

In practice, a single mistaken force-add can redirect later review noise toward local RLCR artifacts such as the goal tracker, instead of keeping review focused on the real code changes.

The previous protection was mostly command-side:

  • block direct git add .humanize
  • block broad git add -A / git add . patterns when local loop state exists

That still left a gap:

  • if .humanize state was force-added or otherwise entered the index, the stop gate only saw a generic dirty tree
  • it did not fail with a specific “local loop state is tracked” reason

This patch closes that gap.

Behavior after this change

  • untracked local loop state remains allowed
  • direct or broad git add commands that would include .humanize/ are still blocked
  • if .humanize/ or legacy .humanize-* has already entered tracking or the index, the stop gate blocks with a dedicated remediation message

Validation

  • bash tests/test-humanize-escape.sh
  • bash tests/test-stop-gate.sh

@chatgpt-codex-connectorchatgpt-codex-connectorBot 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit:a9078aaf4d

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment threadhooks/lib/loop-common.sh Outdated
if git -C "$project_root" ls-files --error-unmatch .humanize >/dev/null 2>&1; then
return 0
fi
if git -C "$project_root" ls-files '.humanize/*' '.humanize-*' | grep -q '.'; then

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Narrow tracked-state match to loop artifacts only

The new tracked-state check now treats any top-level .humanize-* path as loop state, which causes false blocks for legitimate files like .humanize-backup that are explicitly allowed elsewhere (see tests/test-humanize-escape.sh allow-case). In an active loop, a repo that intentionally tracks such a file will now be blocked on every stop attempt with “Tracked Humanize State Blocked,” even when there are no RLCR artifacts, forcing removal of unrelated tracked files to proceed.

Useful? React with 👍 / 👎.

The tracked-state check used '.humanize-*' globs which matched unrelated
dot-prefixed files the command-side guard already allows (for example
.humanize-backup and .humanizeconfig, per tests/test-humanize-escape.sh).
In an active loop, a repo that intentionally tracked such a file was
incorrectly blocked with "Tracked Humanize State Blocked" even with no
RLCR artifacts present.
Scope the detection to .humanize/ via a single ls-files pathspec. This
stays consistent with git_adds_humanize, correctly omits paths the user
has staged for removal via git rm --cached, and drops the redundant
diff --cached probe.
Update the block message (inline fallback and prompt template) to drop
the dangerous "git rm --cached -r .humanize-*" hint, which could strip
user files like .humanize-backup from the index.
Add a stop-gate regression test asserting that tracked .humanize-backup
and .humanizeconfig do not trigger the tracked-state block reason.
@SihaoLiu

Copy link
Copy Markdown
Contributor

@codex please review this PR

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Chef's kiss.

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@SihaoLiuSihaoLiu left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

lgtm

@SihaoLiu
SihaoLiu merged commit 0f025cb into PolyArch:devApr 16, 2026
5 of 6 checks passed
@SihaoLiuSihaoLiu mentioned this pull request Apr 21, 2026
Sign up for freeto 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.

2 participants

@xyyy1420@SihaoLiu
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Block tracked Humanize loop state from entering git history by xyyy1420 · Pull Request #86 · PolyArch/humanize · GitHub
Skip to content

Block tracked Humanize loop state from entering git history - #86

Merged
SihaoLiu merged 2 commits into
PolyArch:devfrom
xyyy1420:dev
Apr 16, 2026
Merged

Block tracked Humanize loop state from entering git history#86
SihaoLiu merged 2 commits into
PolyArch:devfrom
xyyy1420:dev

Conversation

@xyyy1420

Copy link
Copy Markdown
Contributor

Summary

Add a second layer of protection so local Humanize loop state cannot silently enter git history.

This keeps the existing git add command blocking, and adds a stop-gate audit that fails fast when .humanize/ or legacy .humanize-* state has already been tracked or staged.

What changed

  • add a dedicated stop-hook check for tracked or staged Humanize loop state
  • add a dedicated block message for tracked Humanize state
  • tighten the generic git-dirty guidance so RLCR no longer recommends git add -A
  • extend the git add protection tests to cover RLCR tracker and round artifact paths
  • extend the stop-gate tests to verify tracked Humanize state blocks with a dedicated reason

Why

This change is motivated by a real RLCR failure mode:

  • a local loop artifact can be force-added into the git index
  • once that happens, later review rounds can start treating RLCR state files as ordinary tracked changes
  • that shifts review attention away from the actual branch work and creates repeated review churn around tracker and round-artifact files

In practice, a single mistaken force-add can redirect later review noise toward local RLCR artifacts such as the goal tracker, instead of keeping review focused on the real code changes.

The previous protection was mostly command-side:

  • block direct git add .humanize
  • block broad git add -A / git add . patterns when local loop state exists

That still left a gap:

  • if .humanize state was force-added or otherwise entered the index, the stop gate only saw a generic dirty tree
  • it did not fail with a specific “local loop state is tracked” reason

This patch closes that gap.

Behavior after this change

  • untracked local loop state remains allowed
  • direct or broad git add commands that would include .humanize/ are still blocked
  • if .humanize/ or legacy .humanize-* has already entered tracking or the index, the stop gate blocks with a dedicated remediation message

Validation

  • bash tests/test-humanize-escape.sh
  • bash tests/test-stop-gate.sh

@chatgpt-codex-connectorchatgpt-codex-connectorBot 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit:a9078aaf4d

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment threadhooks/lib/loop-common.sh Outdated
if git -C "$project_root" ls-files --error-unmatch .humanize >/dev/null 2>&1; then
return 0
fi
if git -C "$project_root" ls-files '.humanize/*' '.humanize-*' | grep -q '.'; then

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Narrow tracked-state match to loop artifacts only

The new tracked-state check now treats any top-level .humanize-* path as loop state, which causes false blocks for legitimate files like .humanize-backup that are explicitly allowed elsewhere (see tests/test-humanize-escape.sh allow-case). In an active loop, a repo that intentionally tracks such a file will now be blocked on every stop attempt with “Tracked Humanize State Blocked,” even when there are no RLCR artifacts, forcing removal of unrelated tracked files to proceed.

Useful? React with 👍 / 👎.

The tracked-state check used '.humanize-*' globs which matched unrelated
dot-prefixed files the command-side guard already allows (for example
.humanize-backup and .humanizeconfig, per tests/test-humanize-escape.sh).
In an active loop, a repo that intentionally tracked such a file was
incorrectly blocked with "Tracked Humanize State Blocked" even with no
RLCR artifacts present.
Scope the detection to .humanize/ via a single ls-files pathspec. This
stays consistent with git_adds_humanize, correctly omits paths the user
has staged for removal via git rm --cached, and drops the redundant
diff --cached probe.
Update the block message (inline fallback and prompt template) to drop
the dangerous "git rm --cached -r .humanize-*" hint, which could strip
user files like .humanize-backup from the index.
Add a stop-gate regression test asserting that tracked .humanize-backup
and .humanizeconfig do not trigger the tracked-state block reason.
@SihaoLiu

Copy link
Copy Markdown
Contributor

@codex please review this PR

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Chef's kiss.

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@SihaoLiuSihaoLiu left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

lgtm

@SihaoLiu
SihaoLiu merged commit 0f025cb into PolyArch:devApr 16, 2026
5 of 6 checks passed
@SihaoLiuSihaoLiu mentioned this pull request Apr 21, 2026
Sign up for freeto 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.

2 participants

@xyyy1420@SihaoLiu
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Block tracked Humanize loop state from entering git history by xyyy1420 · Pull Request #86 · PolyArch/humanize · GitHub
Skip to content

Block tracked Humanize loop state from entering git history - #86

Merged
SihaoLiu merged 2 commits into
PolyArch:devfrom
xyyy1420:dev
Apr 16, 2026
Merged

Block tracked Humanize loop state from entering git history#86
SihaoLiu merged 2 commits into
PolyArch:devfrom
xyyy1420:dev

Conversation

@xyyy1420

Copy link
Copy Markdown
Contributor

Summary

Add a second layer of protection so local Humanize loop state cannot silently enter git history.

This keeps the existing git add command blocking, and adds a stop-gate audit that fails fast when .humanize/ or legacy .humanize-* state has already been tracked or staged.

What changed

  • add a dedicated stop-hook check for tracked or staged Humanize loop state
  • add a dedicated block message for tracked Humanize state
  • tighten the generic git-dirty guidance so RLCR no longer recommends git add -A
  • extend the git add protection tests to cover RLCR tracker and round artifact paths
  • extend the stop-gate tests to verify tracked Humanize state blocks with a dedicated reason

Why

This change is motivated by a real RLCR failure mode:

  • a local loop artifact can be force-added into the git index
  • once that happens, later review rounds can start treating RLCR state files as ordinary tracked changes
  • that shifts review attention away from the actual branch work and creates repeated review churn around tracker and round-artifact files

In practice, a single mistaken force-add can redirect later review noise toward local RLCR artifacts such as the goal tracker, instead of keeping review focused on the real code changes.

The previous protection was mostly command-side:

  • block direct git add .humanize
  • block broad git add -A / git add . patterns when local loop state exists

That still left a gap:

  • if .humanize state was force-added or otherwise entered the index, the stop gate only saw a generic dirty tree
  • it did not fail with a specific “local loop state is tracked” reason

This patch closes that gap.

Behavior after this change

  • untracked local loop state remains allowed
  • direct or broad git add commands that would include .humanize/ are still blocked
  • if .humanize/ or legacy .humanize-* has already entered tracking or the index, the stop gate blocks with a dedicated remediation message

Validation

  • bash tests/test-humanize-escape.sh
  • bash tests/test-stop-gate.sh

@chatgpt-codex-connectorchatgpt-codex-connectorBot 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit:a9078aaf4d

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment threadhooks/lib/loop-common.sh Outdated
if git -C "$project_root" ls-files --error-unmatch .humanize >/dev/null 2>&1; then
return 0
fi
if git -C "$project_root" ls-files '.humanize/*' '.humanize-*' | grep -q '.'; then

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Narrow tracked-state match to loop artifacts only

The new tracked-state check now treats any top-level .humanize-* path as loop state, which causes false blocks for legitimate files like .humanize-backup that are explicitly allowed elsewhere (see tests/test-humanize-escape.sh allow-case). In an active loop, a repo that intentionally tracks such a file will now be blocked on every stop attempt with “Tracked Humanize State Blocked,” even when there are no RLCR artifacts, forcing removal of unrelated tracked files to proceed.

Useful? React with 👍 / 👎.

The tracked-state check used '.humanize-*' globs which matched unrelated
dot-prefixed files the command-side guard already allows (for example
.humanize-backup and .humanizeconfig, per tests/test-humanize-escape.sh).
In an active loop, a repo that intentionally tracked such a file was
incorrectly blocked with "Tracked Humanize State Blocked" even with no
RLCR artifacts present.
Scope the detection to .humanize/ via a single ls-files pathspec. This
stays consistent with git_adds_humanize, correctly omits paths the user
has staged for removal via git rm --cached, and drops the redundant
diff --cached probe.
Update the block message (inline fallback and prompt template) to drop
the dangerous "git rm --cached -r .humanize-*" hint, which could strip
user files like .humanize-backup from the index.
Add a stop-gate regression test asserting that tracked .humanize-backup
and .humanizeconfig do not trigger the tracked-state block reason.
@SihaoLiu

Copy link
Copy Markdown
Contributor

@codex please review this PR

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Chef's kiss.

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@SihaoLiuSihaoLiu left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

lgtm

@SihaoLiu
SihaoLiu merged commit 0f025cb into PolyArch:devApr 16, 2026
5 of 6 checks passed
@SihaoLiuSihaoLiu mentioned this pull request Apr 21, 2026
Sign up for freeto 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.

2 participants

@xyyy1420@SihaoLiu
, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); Block tracked Humanize loop state from entering git history by xyyy1420 · Pull Request #86 · PolyArch/humanize · GitHub
Skip to content

Block tracked Humanize loop state from entering git history - #86

Merged
SihaoLiu merged 2 commits into
PolyArch:devfrom
xyyy1420:dev
Apr 16, 2026
Merged

Block tracked Humanize loop state from entering git history#86
SihaoLiu merged 2 commits into
PolyArch:devfrom
xyyy1420:dev

Conversation

@xyyy1420

Copy link
Copy Markdown
Contributor

Summary

Add a second layer of protection so local Humanize loop state cannot silently enter git history.

This keeps the existing git add command blocking, and adds a stop-gate audit that fails fast when .humanize/ or legacy .humanize-* state has already been tracked or staged.

What changed

  • add a dedicated stop-hook check for tracked or staged Humanize loop state
  • add a dedicated block message for tracked Humanize state
  • tighten the generic git-dirty guidance so RLCR no longer recommends git add -A
  • extend the git add protection tests to cover RLCR tracker and round artifact paths
  • extend the stop-gate tests to verify tracked Humanize state blocks with a dedicated reason

Why

This change is motivated by a real RLCR failure mode:

  • a local loop artifact can be force-added into the git index
  • once that happens, later review rounds can start treating RLCR state files as ordinary tracked changes
  • that shifts review attention away from the actual branch work and creates repeated review churn around tracker and round-artifact files

In practice, a single mistaken force-add can redirect later review noise toward local RLCR artifacts such as the goal tracker, instead of keeping review focused on the real code changes.

The previous protection was mostly command-side:

  • block direct git add .humanize
  • block broad git add -A / git add . patterns when local loop state exists

That still left a gap:

  • if .humanize state was force-added or otherwise entered the index, the stop gate only saw a generic dirty tree
  • it did not fail with a specific “local loop state is tracked” reason

This patch closes that gap.

Behavior after this change

  • untracked local loop state remains allowed
  • direct or broad git add commands that would include .humanize/ are still blocked
  • if .humanize/ or legacy .humanize-* has already entered tracking or the index, the stop gate blocks with a dedicated remediation message

Validation

  • bash tests/test-humanize-escape.sh
  • bash tests/test-stop-gate.sh

@chatgpt-codex-connectorchatgpt-codex-connectorBot 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit:a9078aaf4d

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment threadhooks/lib/loop-common.sh Outdated
if git -C "$project_root" ls-files --error-unmatch .humanize >/dev/null 2>&1; then
return 0
fi
if git -C "$project_root" ls-files '.humanize/*' '.humanize-*' | grep -q '.'; then

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Narrow tracked-state match to loop artifacts only

The new tracked-state check now treats any top-level .humanize-* path as loop state, which causes false blocks for legitimate files like .humanize-backup that are explicitly allowed elsewhere (see tests/test-humanize-escape.sh allow-case). In an active loop, a repo that intentionally tracks such a file will now be blocked on every stop attempt with “Tracked Humanize State Blocked,” even when there are no RLCR artifacts, forcing removal of unrelated tracked files to proceed.

Useful? React with 👍 / 👎.

The tracked-state check used '.humanize-*' globs which matched unrelated
dot-prefixed files the command-side guard already allows (for example
.humanize-backup and .humanizeconfig, per tests/test-humanize-escape.sh).
In an active loop, a repo that intentionally tracked such a file was
incorrectly blocked with "Tracked Humanize State Blocked" even with no
RLCR artifacts present.
Scope the detection to .humanize/ via a single ls-files pathspec. This
stays consistent with git_adds_humanize, correctly omits paths the user
has staged for removal via git rm --cached, and drops the redundant
diff --cached probe.
Update the block message (inline fallback and prompt template) to drop
the dangerous "git rm --cached -r .humanize-*" hint, which could strip
user files like .humanize-backup from the index.
Add a stop-gate regression test asserting that tracked .humanize-backup
and .humanizeconfig do not trigger the tracked-state block reason.
@SihaoLiu

Copy link
Copy Markdown
Contributor

@codex please review this PR

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Chef's kiss.

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@SihaoLiuSihaoLiu left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

lgtm

@SihaoLiu
SihaoLiu merged commit 0f025cb into PolyArch:devApr 16, 2026
5 of 6 checks passed
@SihaoLiuSihaoLiu mentioned this pull request Apr 21, 2026
Sign up for freeto 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.

2 participants

@xyyy1420@SihaoLiu