Conversation
Preserve master branch code as reference under .legacy/ to make room for next-generation rewrite on the next branch. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…Source) - Add spike/template module with no third-party deps - user.go.tmpl exercises conditional imports (time/regexp/slices/fmt) via template control blocks; struct + nested UserEmail; Validate with required, pattern, canonicalValues, and multi-valued primary cardinality branches - main.go reads the template from disk, renders into bytes.Buffer, runs go/format.Source, writes output/user_gen.go - Output committed for diff comparison against spike/jennifer (audit trail per 00-RESEARCH.md Pitfall 1)
…AP.md
- Replace scimgen → gen (generator module), scimrt → rt (runtime module)
- Replace scimgen → scim (CLI binary in REQ-CLI-01..04 and ROADMAP Phase 7)
- REQ-REPO-02 now names the modules with their full github.com/imulab/go-scim/{gen,rt} paths
- Append reconciliation footer to REQUIREMENTS.md citing CONTEXT.md overrides
- No requirement IDs added/removed/renamed; v1 count unchanged at 85
- Three numbered hard-prohibition rules (no generic Property/tree, no runtime schema interpretation, no IdP accommodation) with rationale and warning signs - Each rule cites concrete legacy artifact paths (.legacy/pkg/v2/prop/property.go, subscriber.go, navigator.go, .legacy/cmd/internal/args/scim.go, .legacy/public/schemas/) so the why is visceral - 'How this is enforced' section names all four levers (PR template, CODEOWNERS, lefthook hooks, CI grep mirror) with the verbatim forbidden-symbol regex set
- gen/go.mod and rt/go.mod with module paths github.com/imulab/go-scim/{gen,rt}
and go 1.25 directive (per CONTEXT.md override of REPO-02 naming)
- gen/doc.go and rt/doc.go placeholder package files so workspace `go build`
has at least one package per module to compile (Phase 0 Plan 02 deviation:
go build refuses an empty module under a workspace; fixed inline)
- LICENSE copied byte-for-byte from .legacy/LICENSE (REPO-03)
- .gitignore excludes go.work, go.work.sum, build artifacts (REPO-01)
- README.md with status, modules description, build steps (workspace and
GOWORK=off), contributing pointer, license — uses
`go build ./gen/... ./rt/...` because repo root is not itself a module
- pull_request_template.md auto-applies on every new PR; three top-level checkboxes self-attest no IdP tolerance, no Resource/Property interface, no runtime os.ReadFile schema loading; each links back to CONTRIBUTING.md Rule N and PITFALLS.md Pitfall N - CODEOWNERS pins @imulab for /PROJECT.md, /gen/, /rt/, /.github/, and /CONTRIBUTING.md with last-pattern-wins ordering (/CONTRIBUTING.md last for highest precedence per GitHub docs) - No global '* @imulab' fallback — CODEOWNERS surfaces high-stakes paths only, not every PR
… AST) - Add spike/jennifer module requiring github.com/dave/jennifer v1.7.1 - main.go produces the same User + UserEmail + Validate output as spike/template using jen.Qual for time/regexp/slices/fmt — Qual() auto-tracks each import, no conditional bookkeeping at the call site - Output committed for diff comparison (audit trail per Pitfall 1) - Align spike/template output to match spike/jennifer's canonical form (UserEmail before User; double-quoted regex literal) so byte-comparison modulo the engine-attribution header passes; this is the apples-to-apples contract from CONTEXT.md (deviation: Rule 1 — corrected spike/template output to match the canonical shape both engines render)
- pre-commit: no-go-work refuses go.work / go.work.sum staging
- pre-commit: forbidden-symbols-source greps {gen,rt}/**/*.go for
Rule 1 + Rule 2 relapse signatures (see CONTRIBUTING.md)
- pre-commit: forbidden-vendor-names-source greps {gen,rt}/**/*.go
case-insensitively for Rule 3 vendor list (see CONTRIBUTING.md)
- commit-msg: vendor-names rejects commit messages containing
Rule 3 vendor names case-insensitively (see CONTRIBUTING.md)
- Regex set verbatim with CI mirror in Plan 02 for parity
- lefthook binary absent on dev machine; CI mirror is security
boundary per Pitfall 4 in 00-RESEARCH.md
- .github/scripts/forbidden-symbols.sh: single source of truth for the four forbidden-symbol regexes (Rules 1, 2, 3 relapse signatures and vendor-name list per CONTRIBUTING.md). Excludes docs/planning/legacy paths plus documentary mentions in CONTRIBUTING.md, lefthook.yml, the workflow itself, and the PR template (deviation: plan's exclude list missed PR template; added). - .github/workflows/ci.yml: four jobs (build-workspace, build-isolated, forbidden-symbols, commit-msg-lint) on Go 1.25 + 1.26 matrix using actions/checkout@v4 + actions/setup-go@v6. Workspace build uses `go build ./gen/... ./rt/...` not plain `./...` because repo root is not a module. Script exits 0 against current tree.
Targets: workspace, build-workspace, build-isolated, forbidden-symbols, ci-local (composite), spike (forward-compatible with Plan 03's runner), clean, help. `make ci-local` reproduces every CI check locally: workspace build via `go build ./gen/... ./rt/...`, isolated build with GOWORK=off in each module, plus forbidden-symbols.sh. Verified to succeed on a clean tree.
- 00-04-SUMMARY.md documents the surgical reconciliation of REQUIREMENTS.md, ROADMAP.md, and STACK.md per CONTEXT.md <requirements_overrides> - STATE.md advanced (Plan 4 of 4 complete in Phase 0; metric recorded) - ROADMAP.md progress row updated - REPO-02 marked complete in REQUIREMENTS.md traceability table - Issues Encountered section in SUMMARY notes that Task 2's STACK.md edits were absorbed into Plan 00-01's parallel commit (43bd04d) due to wave-1 concurrent execution; all changes ARE in git history, only the commit-message attribution is misleading
…ook plan - 00-01-SUMMARY.md: 3 tasks completed atomically; cites legacy artifact paths for Plan 02 CI mirror parity; documents the parallel-agent index contamination in Task 2 commit (43bd04d) as a process deviation - STATE.md: bumped progress 25%->50% (2/4 plan summaries on disk), Last session updated, three Plan 00-01 decisions added - ROADMAP.md: Phase 0 plan-progress 2/4 - REQUIREMENTS.md: REPO-04 and REPO-05 marked complete in Active list and traceability table
- Add 00-03-SUMMARY.md with criterion-by-criterion evidence, line counts (template 67 LOC tmpl + 65 LOC runner; jennifer 117 LOC), conditional- import bookkeeping count (8 in template; 0 in jennifer with 7 Qual call sites), Phase 2 fallback note (imports.Process documented but not prototyped), and the cross-agent commit-attribution note for transparency - Update STATE.md: progress 100%, Phase 0 complete, decisions section gains Plan 00-03 entries, Stopped At reflects plan completion - ROADMAP.md: Phase 0 marked complete (4/4 plans, 2026-05-08) via roadmap update-plan-progress
imulab
force-pushed
the
test/codeowners-verify
branch
from
May 8, 2026 04:19
6d4fa9e to
03f36fe
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Verifying
CODEOWNERS auto-requests @imulab on /CONTRIBUTING.md edits. Will close without merging.