mirror of
https://github.com/Imbad0202/academic-research-skills.git
synced 2026-09-14 13:51:17 +08:00
6c17c496b4
ARS is a public repo. Some spec docs co-occurred named institutions with
named publishers in ways that link generic content back to specific
private maintainer sessions, e.g. "HEEACT Springer chapter session"
references in v3.6.8 and v3.7.3 specs. While each individual keyword
(HEEACT as Taiwan QA institution; Springer as publisher) is legitimate
in generic educational content, their co-occurrence in spec
storytelling identifies a specific private project that should not be
exposed in a public repo.
Two changes:
1. De-identify private-project context in 7 lines across 5 files:
- docs/design/2026-04-30-ars-v3.6.8-trust-provenance-...spec.md
(lines 55, 424, 533, 594, 616-617): replace
"HEEACT Springer chapter authoring session" /
"HEEACT chapter session" with "production session" framing;
redact internal file paths (B_heeact_documents/, etc.) into
abstract descriptions.
- docs/design/2026-05-12-ars-v3.7.3-...spec.md (line 30):
drop the "HEEACT Springer chapter session" phrasing — the
v3.6.8 §1 cross-reference alone is sufficient citation.
- docs/design/2026-04-20-v3.4-prisma-trAIce-...design.md (line
572): replace named private-project repo ref with "downstream
private-project" descriptor.
- shared/templates/codex_audit_multifile_template.md (line 54):
replace "HEEACT chapter session" with "production session".
- examples/compliance/fixture_sr_full_compliant.yaml (line 64):
replace named IRB issuer with "Institutional IRB" generic.
2. Add scripts/check_public_repo_boundary.py + 14-test mutation
suite + CI workflow steps to mechanically block future
re-introduction. The lint flags BOUNDARY-VIOLATING contexts
(co-occurrence patterns, internal repo names, internal file
paths) rather than the keywords themselves. Allowlist exempts:
maintainer attribution line in CONTRIBUTING.md, procedure
blocks that TEACH the boundary rule itself (e.g. v3.6.2 spec
line 758 "no hei-platform content, no personal data" checklist).
Retrospective rationale (this commit's why):
The 2026-05-12 v3.7.3 ship re-used the v3.6.8 phrase
"HEEACT Springer chapter session" in a fresh spec doc on the
incorrect reasoning that "v3.6.8 already public ⇒ phrase is now
licensed". The 10 codex review rounds did not catch this because
codex /review prompt scoped to technical correctness, not
public-repo PII boundary. Existing memory-only rules
(feedback_ars_public_repo_boundary.md) failed to fire because
the author bypassed the grep step they prescribed. This commit
moves the defense from memory rules (human-triggered) to CI lint
(mechanically-triggered) so the failure mode cannot recur silently.
Memory file feedback_ars_public_repo_boundary.md updated
separately with the "already public ≠ license to repeat" rule
and the "grep hit → de-identify default, not 'baseline already
has it' license" judgment criterion.
Regression status: 981 tests pass / 3 skipped / 0 failed
(+14 new boundary lint tests). v3.6.7 + v3.6.8 + v3.7.1 +
v3.7.2 + v3.7.3 lints all PASS unmodified. No agent prompt
changes (the de-identification is purely descriptive prose
in spec docs and fixture data).
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>