Skip to content

AGENTIC.a2ml instructs agents to 'Never use AGPL' — contradicts Rules 3, 4 and 5 #646

Open

Description

@hyperpolymath

An agent instruction that contradicts three licence rules

Every generated .machine_readable/6a2/AGENTIC.a2ml carries this line in its
"never do this" list:

# - Never use AGPL license (use MPL-2.0)

AGENTIC.a2ml is read by AI agents as a behavioural constraint. This one is now wrong
three times over.

What it contradicts

Rule Says The instruction says
Rule 3 Projects co-developed with the owner's son are AGPL-3.0-or-later never use AGPL
Rule 4 007 — the Agent Meta-Language — is AGPL-3.0-or-later never use AGPL
Rule 5 (added 2026-08-26) Games are AGPL-3.0-or-later as a class never use AGPL

The sharpest case

007-lang's LICENSE is the GNU Affero General Public License. Its own agent
instructions say - Never use AGPL-3.0.

So the single repo that Rule 4 names as AGPL instructs every agent reading it to never
use AGPL. An agent doing as it is told would "correct" the licence the policy requires.

Scale

  • 899 local AGENTIC.a2ml files carry the line
  • GitHub code search returns 100+ hits across 82 repos (capped, so the live figure is
    higher)
  • It appears alongside ECOSYSTEM.a2ml, META.a2ml, NEUROSYM.a2ml, PLAYBOOK.a2ml,
    STATE.a2ml — a generated 6a2 manifest set, not hand-written

Why this is filed rather than swept

Same reasoning the pmpl-to-mpl-sweep-runbook §7a gives, and it was right there:

Fix at the source, not 236 times. Doing manual edits invites immediate re-drift on
the next scaffold run.

899 edits would be undone by the next 6a2 regeneration. The generator must be found and
fixed first.
It is not in rsr-template-repo, scaffoldia, or
rsr-julia-library-template-repo — all three return 404 for that path — so the emitter is
somewhere else and needs locating.

Suggested wording once the source is found

# - Never change an existing file's licence (owner-only, manual — see LICENCE-POLICY A2)
# - New code defaults to MPL-2.0; AGPL-3.0-or-later is CORRECT under Rules 3, 4 and 5

That preserves the intent — MPL is the default — without instructing agents to undo
deliberate policy.

Related

This is the third instance today of the same failure mode: an automated artefact whose
self-description has drifted from what the estate actually wants.

Horizon: 899 is a count of local checkouts under hyper-repos/ and meta-repos/, which
include vendored sub-copies; the number of distinct estate-authored files is lower. The
GitHub figure of 82 repos is capped at 100 results and is a floor, not a total.

Activity

  1. added
    governancePolicy, rulesets, standards, compliance, and their enforcement
    scope:estateAffects many or all repos across the estate
    tech-debtKnown shortcut, drift, or hygiene owed - includes cleanup
    on Aug 26, 2026
  2. hyperpolymath commented on Aug 26, 2026

    @hyperpolymath
    OwnerAuthor

    Investigated 2026-08-26 — there is no generator, and this issue's remediation premise is inverted

    1. Where the files come from

    hyperpolymath/rsr-template-repo ships .machine_readable/descriptiles/AGENTIC.a2ml verbatim. It is not written by code; it is copied by GitHub's "Use this template", and just repo-init's token-substitution pass does not touch the [agent-constraints] comment. Repo is_template: true, pushed today.

    ⚠️ An earlier pass in this session reported the template "ruled out". That was a false negative — the directory was renamed 6a2 → descriptiles on 2026-06-29 (3b5b5de, PR #128). A 404 on the old path was read as repo-wide absence. Re-verified live: .machine_readable/6a2/AGENTIC.a2ml → 404, .machine_readable/descriptiles/AGENTIC.a2ml → 1,772 bytes, offending line at line 24.

    The only code that actually writes the file is gitbot-fleet/robot-repo-automaton/src/skeleton.rs:59-76 — and it is dormant: grep -rn 'skeleton' gitbot-fleet/.github/workflows/*.yml returns zero hits, and no workflow in rsr-template-repo references it either, despite skeleton.rs's own doc comment claiming "rsr-template-repo's drift-CI runs robot-repo-automaton skeleton check .". That CI does not exist.

    The bulk of the population came from a chain of one-off estate sweeps, not an emitter — 101 of the files were added by a single 2026-03-16 commit (chore: restructure 6a2ml files into .machine_readable/6a2/).

    2. ⚠️ The remediation premise here is backwards

    This issue argues that manual fixes "would be undone by the next 6a2 regeneration". There is no regeneration. The population is static. A sweep would hold.

    What must be fixed at source — to stop new repos inheriting — is three files, and only three:

    file state
    rsr-template-repo/.machine_readable/descriptiles/AGENTIC.a2ml live propagator → rsr-template-repo#45
    gitbot-fleet/robot-repo-automaton/templates/skeleton/.machine_readable/6a2/AGENTIC.a2ml dormant, still on PMPL wording
    standards/agentic-a2ml/examples/comprehensive.a2ml spec example, still on PMPL wording

    3. The real problem is not staleness, it is contradiction

    The line reads # - Never use AGPL license (use MPL-2.0). LICENCE-POLICY.adoc now defines five rules and three of them mandate AGPL-3.0-or-later: Rule 3 (co-developed), Rule 4 (network-deployed services), Rule 5 (games).

    An agent obeying this line inside a games repo would "correct" a deliberately AGPL work to MPL-2.0 — the exact regression a bot in scaffoldia was caught scheduled to perform and had removed.

    4. Corrected count

    The figure of 899 is wrong. Measured by enumerate-then-filter over both accounts:

    hyperpolymath metadatastician total
    repos enumerated 384 36 420
    repos with ≥1 AGENTIC.a2ml 322 28 350
    blobs 615 32 647

    ⚠️ 647 is a floor: 1 of 420 trees (julia-ecosystem) returned truncated: true.

    Files actually carrying the line: 646, not 899. The 899 appears to be a count of files at the 6a2 path, not of files containing the line.

    Wording variants across all 646:

    381  # - Never use AGPL license (use MPL-2.0)
    253  # - Never use AGPL license (use PMPL-1.0-or-later)     <- RETIRED licence
      4  # - Never use AGPL license (use AGPL-3.0-or-later)     <- self-contradictory
      8  other wordings
    

    The 253 PMPL copies are a second defect this issue does not mention — they instruct agents toward a licence that no longer exists.

    5. Homogeneity, and the good news

    141 distinct byte-contents across 1,018 local files — a small number of template vintages plus a long tail of hand-edits. Top classes: 125 × 34-line MPL, 115 × 34-line PMPL, 86 × 24-line MPL, 61 × 51-line (= template HEAD).

    Unfilled placeholders are essentially absent. All 1,018 scanned for {{…}}, ${…}, PROJECT_NAME, REPLACE_ME, PENDING, TODO, FIXME and others: the only {{ and TODO hits are prose about placeholders. rsr-template-repo/scripts/check-no-placeholders.sh is doing its job.

    One real residue: hyperpolymath/proof-burrower still carries project = "rsr-template-repo" at line 8 — the sole unsubstituted self-name in the population.

    Not checked

    Non-default branches; julia-ecosystem's full tree (truncated); local dirs outside hyper-repos/ + meta-repos/; the sibling descriptiles (ANCHOR.a2ml, CLADE.a2ml, VARIANT.a2ml), which were neither counted nor hashed.

  3. hyperpolymath commented on Aug 31, 2026

    @hyperpolymath
    OwnerAuthor

    Re-measured 2026-08-31. Numbers stale — the fix is half-shipped and stalled.

    Sources: all fixed. rsr-template-repo (note: the file moved to machine-readable/descriptiles/AGENTIC.a2ml, no leading dot), the gitbot-fleet skeleton, standards' own agentic-a2ml/examples/comprehensive.a2ml, and 007-lang (which now states its AGPL ruling explicitly — the sharpest contradiction is cured). Population is static: nothing regenerates the old wording any more.

    Deployed copies: a direct-push sweep ran 2026-08-28 00:03–05:33Z, alphabetical ("fix: AGENTIC licence line + a2ml-validate-action repin" commits, referencing this issue), and stopped after launch-scaffolder, before lithoglyph — never resumed. Remote sampling brackets the boundary exactly: 20/20 repos in the swept range carry the new wording; 24/24 in the unswept range still carry "Never use AGPL", including every metadatastician repo checked. Of 158 remotely-verifiable canonical paths, 95 remain; extrapolated against the sweep's 309-repo scope, roughly 170–185 repos (~55–60%) still carry the contradictory line (extrapolation, labelled as such — the local disk is too stale to trust on this issue; remote is the only honest plane).

    This issue is now the tracker for the stalled remainder. Next step: resume the direct-push sweep at lithoglyph, alphabetical to the end, then all of metadatastician, using the same commit wording. The 08-26 census figures (646 files / 350 repos) are obsolete and should not be re-quoted.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    governancePolicy, rulesets, standards, compliance, and their enforcementpriority:p2Normal - queue itscope:estateAffects many or all repos across the estatetech-debtKnown shortcut, drift, or hygiene owed - includes cleanup

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions