Conversation
The coach method says client identity never enters a public repo (maarg-agent-coach docs/coach-method.md, and the architect PACK.md says it again: "Rules go there, generically worded"). Two files predated that being enforced. agents/moqui-architect.md - The data-statement example named the engagement. Swapped for a generic commerce fact with the same shape (grain noun, cardinality, no entity names). - The hybrid-data-model rule named the product and its namespace. The rule's load-bearing content is three entity families, an OFBiz half that is customized, and "resolve against the checked-out code". None of that needs the product name. The literal namespace was illustration only, because this file's own H6 rule forbids using the namespace as evidence of family. Replaced with an instruction to read the project's components for it. - Family-masquerade rule: "a HotWax entity" -> "a project-custom entity". The rule is unchanged. docs/architect-skill-spec.md - Same generalisations for H1, H1a, H3, H6. - The round narratives were engagement record, not rules. Word-swapping the project name would have left the leak: audited PR numbers, sponsor ruling ids, and client entity/status identifiers. Those moved to the private coach repo (packs/architect/rounds-1-4-record.md, which is their only other home) and the generic lesson stays here. - All 21 rules (S1-S10, H1-H10, H1a) and the 5-point review gate are still present, with their failure evidence generalised, not dropped. Corrects a false claim, in both files Both taught that OrderItem.correspondingPoId is a custom field and not vanilla OFBiz. It is a stock Apache OFBiz field, defined upstream at applications/datamodel/entitydef/order-entitymodel.xml:557 (entity opens line 520), aliased in three upstream view entities, and read across the ecommerce plugin and order services. The example that taught "verify before you assert" was itself an unverified assertion. The rule now teaches the two-directional trap: a customized model adds fields upstream never had AND repurposes fields upstream already defines, so the name tells you neither. Provenance is settled by diffing against the forked upstream release. That is stronger than what it replaces, and it needs no product name. AEC1's grain trap is unaffected and still names the field. Unit-grain vs order-grain is a real property of it, it was never a provenance claim, and the field is open-source OFBiz rather than project identity.
Same sweep as the architect spec, same rule (coach-method.md:27-28, and packs/ba/PACK.md:27 records that the Coach owns this file). Sections A-G were already clean and are byte-identical. The rounds were the leak, and it was wider than the architect one: - the client name notnaked, twice - the project name, six times - a real retail brand, named as the client's real concession partner - a real person's first name - the audited client PR number - a role-play persona name, internal working paths, and package internals (question ids, R-rule ranges, story versions, evidence-entry ids, coverage tallies) Rounds 3 and 5 already said "client identity never enters this repo" in their own headers. So the discipline was known by 2026-07-11 and was never applied backwards to rounds 1-2, or forwards to round 6. The round narratives moved to the private coach repo (packs/ba/rounds-1-6-record.md, their only other home). Every rule stays here with its failure evidence generalised, not dropped. All 57 rules, 14 headings and 5 eval rows are present before and after. D8 was written against its own evidence D8 is the demo-naming lint: no real people or brands in demo-facing artifacts. Its failure note named the real brand and the real person it was written about, in this public repo, for about a month. The rule's own example broke the rule, in the exact medium the rule is about. Same shape as the correspondingPoId claim in the architect spec: the example that teaches a discipline is where the discipline was not applied. D8's text is unchanged; only its evidence is generalised, and the file now says plainly that this happened. Left alone: "Anil as trainee" in the header. That is the author's own name, not client identity, and not mine to strip.
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.
Why
This repo is public. The coach method says client identity never enters a public repo (
maarg-agent-coach/docs/coach-method.md:27-28). The architect pack says it again, with the split spelled out:Two files predated that being enforced. This is the older, wider version of the leak that was caught and force-pushed out of #27.
Counts found (re-checked today, not taken on trust)
agents/moqui-architect.mdpre-order)docs/architect-skill-spec.mdPre-Order)Both files also carried
co.hotwax.*as a namespace example, which the original counts did not include.Decision per mention
"A pre-order unit is reserved…"co.hotwax.*as the third familyOrderItem.correspondingPoId"is a HotWax field"org.apache.ofbiz.*package"On the constraint "do not weaken a rule to anonymise it"
No rule was weakened. Checked mechanically: all 21 rules (S1–S10, H1–H10, H1a) and the 5-point review gate are still in the spec, and the heading count is unchanged.
The failure evidence attached to each rule was generalised, not dropped — the shape of a failure is what teaches, the client's identifier is not. Example: "a design doc still told builders to DROP an entity after the sponsor ruled KEEP" teaches H7 exactly as well as the named version did.
One mention is kept, deliberately: AEC1 still names
OrderItem.correspondingPoId. That is a stock open-source Apache OFBiz field, not project identity, and the trap it plants is about record grain. The spec now says so explicitly so nobody strips it later by mistake.A false claim, corrected in both files
Both files taught, as the worked example for "verify the field before writing EXISTS", that
OrderItem.correspondingPoIdis a custom field and not vanilla OFBiz.That is wrong. It is a stock Apache OFBiz field:
applications/datamodel/entitydef/order-entitymodel.xml:557, inside<entity entity-name="OrderItem">which opens at line 520entitymodel_view.xmlview entitiesOFBIZ-*Jira commits, so it tracks upstream and is not a vendor patchThe example that taught "verify before you assert" was itself an unverified assertion.
The rule now teaches the two-directional trap instead: a customized model adds fields upstream never had and repurposes fields upstream already defines, so the field name tells you neither, and provenance is settled by diffing against the forked upstream release. That is stronger than what it replaces, and it needs no product name.
Verified against a local Apache OFBiz checkout. Worth a second pair of eyes on the finding itself, since it contradicts a doctrine line that has stood since 2026-07-11.
What needs the Agent Coach's sign-off
docs/architect-skill-spec.mdis Coach-owned, so treat this PR as the proposal for it. Nothing is merged.packs/architect/rounds-1-4-record.md, on branchcoach/architect-rounds-1-4-record. Rounds 1–4 existed nowhere else — the private pack only hadround-5-record.md— so this move is preservation, not duplication. Reversible: revert this file and the content is unchanged in the private repo.correspondingPoIdcorrection — a correctness change to doctrine, not an anonymisation one. It would be worth making even if this repo were private.Not touched, and why
Six other tracked files mention HotWax:
assets/moqui-data-feed.md,assets/maarg-data-manager.md,assets/moqui-integration-testing.md,assets/moqui-hemp-method.md,skills/moqui-data-feed/SKILL.md,skills/maarg-mdm/SKILL.md, plusagents/moqui-qa-technician.md,docs/ba-skill-spec.md,docs/prior-art-agent-teams.mdand the five plugin manifests.Those are a different category and I left them alone:
co.hotwax.*as code identifiers in file:line citations — the author's own product namespace, which is what those docs are aboutdocs/ba-skill-spec.mdis the one that looks like the same problem as this PR (project name ×4 in round headings, and the same engagement). It is BA-owned rather than architect-owned, so it is out of scope here. Flagging it as likely next.Verification run
correspondingPoIdprovenance: confirmed in upstream OFBiz source, cited aboveSecond file:
docs/ba-skill-spec.mdAdded after the first review. Same rule, same treatment, and the Coach owns this file too (
packs/ba/PACK.md:27).The leak was wider than the architect one. What was public:
notnakedD8 was written against its own evidence
D8 is the demo-naming lint. It says demo-facing artifacts are grep-audited so that no real people or brands appear.
Its own failure note named the real brand and the real person it was written about, sitting in this public repo for about a month.
The rule's example broke the rule, in the exact medium the rule is about. This is the same defect shape as the
correspondingPoIdclaim above: the example that teaches a discipline is the place the discipline was not applied.D8's rule text is unchanged. Only its evidence is generalised, and the file now states plainly that this happened, so the lesson survives the fix.
The discipline was already known
Rounds 3 and 5 carry the line "client identity never enters this repo" in their own headers, written 2026-07-11. So the rule was understood at the time. It was never applied backwards to rounds 1–2, or forwards to round 6 on 2026-07-17.
That suggests the gap is procedural rather than a one-off. Two things would close it, both outside this PR:
packs/ba/PACK.mdhas no public/private hygiene line. The architect pack has one and it is the reason that spec was easier to reason about. Worth adding.Same treatment, verified the same way
diff.packs/ba/rounds-1-6-record.md, verbatim, checked withdiff. Rounds 1–6 existed nowhere else — that pack held onlyPACK.md.Checked mechanically, before vs after:
##headingsLeft alone, deliberately
"Anil as trainee" in the header. That is the author's own name, not client identity, and not mine to strip. Say the word if you want it out.
The two files can be accepted separately
Revert either file and the other still stands. The private record covers both and is also unmerged.